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();
}
}