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

/**

* 汽车过山洞问题.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

奔驰开始过山洞~!

奔驰通过了山洞~!

红旗开始过山洞~!

红旗通过了山洞~!

卡宴开始过山洞~!

卡宴通过了山洞~!

法拉利开始过山洞~!

法拉利通过了山洞~!

宝马开始过山洞~!

宝马通过了山洞~!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值