Semaphore模拟停车场使用代码

在进入停车场之前会有一个提示牌,上面显示着停车位还有多少,当车位为 0 时,不能进入停车场,当车位不为 0 时,才会允许车辆进入停车场。

public class CarParking {

private static Semaphore semaphore = new Semaphore(10);

public static void main(String[] args){

for(int i = 0;i< 100;i++){

Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println(“欢迎 ” + Thread.currentThread().getName() + ” 来到停车场”);
// 判断是否允许停车
if(semaphore.availablePermits() == 0) {
System.out.println(“车位不足,请耐心等待”);
}
try {
// 尝试获取
semaphore.acquire();
System.out.println(Thread.currentThread().getName() + ” 进入停车场”);
Thread.sleep(new Random().nextInt(10000));// 模拟车辆在停车场停留的时间
System.out.println(Thread.currentThread().getName() + ” 驶出停车场”);
semaphore.release();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}, i + “号车”);

thread.start();
}

}

}

Semaphore 的初始容量,也就是只有 10 个车位,我们用这 10 个车位来控制 100 辆车的流量;

semaphore.acquire 占用一个车位,驶出停车场时,就会 semaphore.release 让出一个车位,让后面的车再次驶入。

————下载必看————

1、资源通过互联网渠道公开获取,仅供阅读测试,请在下载后24小时内删除,谢谢合作!
2、本站解压密码统一为:yudouyudou
3、本站微信客服/失效补发:rsst58
4、若版权方认为本站侵权,请联系发邮件至(rsstime@qq.com)处理。
5、关于下载,播放声音字幕,解压等问题,请点击查看>>常见问题
时光屋 » Semaphore模拟停车场使用代码

发表评论

至臻视听_发烧收藏

会员介绍 常见问题