/**
* 汽车过山洞问题.5辆汽车过山洞,依次经过山洞。每辆车通过山洞花费10秒,使用多线程实现。
*/
class Car extends Thread{
private String name; //汽车名
private Object cave; //要过的山洞
public Car(String name,Object cave) {
this.name=name;
this.cave=cave;
}
public void run(){
synchronized(cave){ //同步,保证同一个山洞,一次只能经过一辆车(一个线程)
System.out.println(name+"开始过山洞~!");
try{
sleep(10*1000); //消耗时间10秒
}
catch(Exception e){
}
System.out.println(name+"通过了山洞~!");
}
}
}
class AcrossCave{
public static void main(String[] args) {
Object cave = new Object(); //创建一个山洞
//创建5辆车
Car c1 = new Car("奔驰",cave);
Car c2 = new Car("宝马",cave);
Car c3 = new Car("法拉利",cave);
Car c4 = new Car("卡宴",cave);
Car c5 = new Car("红旗",cave);
//启动线程,待cpu调度
c1.start();
c2.start();
c3.start();
c4.start();
c5.start();
}
}
结果:
MacbookPro:JAVA Hx$ javac AcrossCave.java
MacbookPro:JAVA Hx$ java AcrossCave
奔驰开始过山洞~!
奔驰通过了山洞~!
红旗开始过山洞~!
红旗通过了山洞~!
卡宴开始过山洞~!
卡宴通过了山洞~!
法拉利开始过山洞~!
法拉利通过了山洞~!
宝马开始过山洞~!
宝马通过了山洞~!
网友评论