Semaphore代码练习
网站首页 文章专栏 Semaphore代码练习
Semaphore代码练习
编辑时间:2019-07-08 10:14 作者:毛毛小妖 浏览量:46 评论数: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();
		}
	}
}

 

来说两句吧
最新评论