美文网首页
多线程实现汽车过山洞问题

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

作者: 懵智的大仁哥 | 来源:发表于2016-03-04 22:45 被阅读476次
     /**
      * 汽车过山洞问题.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
    奔驰开始过山洞~!
    奔驰通过了山洞~!
    红旗开始过山洞~!
    红旗通过了山洞~!
    卡宴开始过山洞~!
    卡宴通过了山洞~!
    法拉利开始过山洞~!
    法拉利通过了山洞~!
    宝马开始过山洞~!
    宝马通过了山洞~!

    相关文章

      网友评论

          本文标题:多线程实现汽车过山洞问题

          本文链接:https://www.haomeiwen.com/subject/owiokttx.html