多线程实现汽车过山洞问题

 /**
  * 汽车过山洞问题.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
奔驰开始过山洞~!
奔驰通过了山洞~!
红旗开始过山洞~!
红旗通过了山洞~!
卡宴开始过山洞~!
卡宴通过了山洞~!
法拉利开始过山洞~!
法拉利通过了山洞~!
宝马开始过山洞~!
宝马通过了山洞~!

你可能感兴趣的:(多线程实现汽车过山洞问题)