月眸


Semaphore代码练习

毛毛小妖 2019-06-23 177浏览 1条评论
首页/ 正文
分享到: / / / /
package com.demo.juc;

import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;

/**
 * 抢车位,停车场每次允许3辆车,现在有7辆车抢3个车位
 * @author shengyu
 *
 */
public class TestSemaphore {

	public static void main(String[] args) {
		
		Semaphore semaphore = new Semaphore(3);
		
		for(int i=1;i<=7;i++){
			final int index = i;
			new Thread(()->{
				try {
					//获取车位
					semaphore.acquire();
					System.out.println(Thread.currentThread().getName()+"抢到了车位");
					TimeUnit.SECONDS.sleep(3);
					System.out.println(Thread.currentThread().getName()+"停了3秒钟离开车位");
				} catch (Exception e) {
					e.printStackTrace();
				}finally {
					//释放车位
					semaphore.release();
				}
			}, String.valueOf(index)).start();
		}
	}
}

 

最后修改:2019-06-23 11:02:38 © 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

上一篇

发表评论

说点什么吧~

评论列表

匿名用户 2019-06-25 11:18:40


回复