JUC练习7——信号量semaphore
1,信号量是什么
用于表明可用的互斥资源个数,由此作为标志,使得多个进程互斥的使用互斥资源
2,信号量的应用场景
多个进程需要互斥的访问少量资源
3,代码示例
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
public class JucTest7
{
public static void main(String[] args)
{
/**
* 信号量Semaphore的简单使用
* 模拟6辆车来争抢3个停车位的事件(多个进程互斥访问有限的资源)
* 进程尝试获取position的时候,如果position没有了,就等待。
* 一旦进程释放了position就会唤醒正在等待的进程去获取position
*/
Semaphore position = new Semaphore(3);
for (int i=1;i<=6;i++)
{
new Thread(()->
{
try {
position.acquire();//获取车位
System.out.println(Thread.currentThread().getName()+"获取到车位");
TimeUnit.SECONDS.sleep(2);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
System.out.println(Thread.currentThread().getName()+"释放车位");
position.release();
}
},"A"+i).start();
}
}
}
浙公网安备 33010602011771号