childrenOnMolokai++; lock1.release();
lock3.acquire();// 回来一个孩子 childrenReadyOnMolokai.sleep(); lock3.release();
} else {// 运大人 lock2.acquire(); }
if (adultOnOahu != 0) {
bg.ChildRideToMolokai(); childrenOnOahu--; childrenOnMolokai++; lock3.acquire();
childrenReadyOnMolokai.wake(); lock3.release(); lock3.acquire();
childrenReadyOnMolokai.sleep(); lock3.release();
adultWaitOnOahu.wake(); lock2.release(); lock1.acquire();
childrenWaitOnOahu.sleep(); lock1.release(); continue;
} else {
} else// 剩下的孩子从O岛到M岛 { }
lock3.acquire(); done = true;
bg.ChildRideToMolokai(); childrenOnOahu--; childrenOnMolokai++;
childrenReadyOnMolokai.wakeAll(); lock3.release();
}// 返航的操作
if (done == true) {
break; }// 表示没有结束 else {
pilot = 3;
bg.ChildRowToOahu(); childrenOnOahu++; childrenOnMolokai--;
21
}
}
}
continue;
static void SampleItinerary() { }
private static class Child implements Runnable { }
private static class Adult implements Runnable {
Adult(Condition childrenWaitOnOahu, Condition adultWaitOnOahu, }
public void run() {
22
System.out.println(\bg.AdultRowToMolokai(); bg.ChildRideToMolokai(); bg.AdultRideToMolokai(); bg.ChildRideToMolokai();
Molokai\);
Child(Condition childrenWaitOnOahu, Condition adultWaitOnOahu, }
public void run() { }
private int Status;
private int location_now;// 1:Oahu,2:Molokai private Condition childrenWaitOnOahu; private Condition adultWaitOnOahu;
private Condition childrenReadyOnMolokai;
ChildItinerary();
Condition childrenReadyOnMolokai) { this.location_now = location_now;
this.childrenWaitOnOahu = childrenWaitOnOahu; this.adultWaitOnOahu = adultWaitOnOahu;
this.childrenReadyOnMolokai = childrenReadyOnMolokai;
Condition childrenReadyOnMolokai) {
this.childrenWaitOnOahu = childrenWaitOnOahu; this.adultWaitOnOahu = adultWaitOnOahu;
this.childrenReadyOnMolokai = childrenReadyOnMolokai;
}
}
}
AdultItinerary();
private Condition childrenWaitOnOahu; private Condition adultWaitOnOahu;
private Condition childrenReadyOnMolokai;
三、测试结果
23
24
25
相关推荐: