JAVA练习 :公交车,司机和售票员信号量问题
import java.util.concurrent.Semaphore;
public class BusTest {
public static void main(String[] args)throws Exception{
Semaphore doorClosed = new Semaphore(1);
Semaphore carStoped = new Semaphore(1);
new Thread(){
public void run(){
try {
//初始车是停的
carStoped.acquire();
while(true){
doorClosed.acquire();
System.out.println("司机:乘客上完了,开车。");
Thread.sleep(1000);
System.out.println("司机:到站了,停车。");
Thread.sleep(1000);
carStoped.release();
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
new Thread(){
public void run(){
while(true){
try {
carStoped.acquire();
System.out.println("售票员:开门了。");
Thread.sleep(1000);
System.out.println("售票员:买票了。");
Thread.sleep(1000);
System.out.println("售票员:关门了。");
Thread.sleep(1000);
doorClosed.release();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
}
}
本文介绍了一个使用Java并发库Semaphore实现的公交车、司机和售票员之间的信号量同步问题。通过两个Semaphore对象分别控制车门开关和车辆停止状态,实现了司机与售票员之间的线程同步,确保了公交车运营的安全性和有序性。
1万+

被折叠的 条评论
为什么被折叠?



