Semaphore信号同步类
Posted fdy-study-consist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Semaphore信号同步类相关的知识,希望对你有一定的参考价值。
/** * @Description: 信号量 * @author: fdy * @date: 2020/2/13 16:55 */ public class CustomCheckWIndow { public static void main(String[] args) { // 设置3个信号量,即3个服务窗口 Semaphore semaphore = new Semaphore(3); // 这个队伍排了5个人 for (int i = 1; i <= 5; i++) { new SecurityCheckThread(i,semaphore).start(); } } private static class SecurityCheckThread extends Thread { private int seq; private Semaphore semaphore; public SecurityCheckThread(int seq, Semaphore semaphore) { this.seq = seq; this.semaphore = semaphore; } @Override public void run() { try { semaphore.acquire(); System.out.println("No."+seq+"乘客,正在检验中"); // 假设号码是整除2的人是身份可疑人员,需要花更长时间来安检 if (seq%2 == 0){ Thread.sleep(10000); System.out.println("No."+seq+"乘客,身份可疑,不能出国! "); } } catch (InterruptedException e) { e.printStackTrace(); }finally { semaphore.release(); System.out.println("No."+seq+"乘客已完成服务."); } } } }
只有调用Semaphore对象的acquire()成功后, 才可以往下执行, 完成后执行release()释放持有的信号量.
以上是关于Semaphore信号同步类的主要内容,如果未能解决你的问题,请参考以下文章
CountDownLatch 闭锁Semaphore信号量Barrier栅栏
java 5线程中 Semaphore信号灯,CyclicBarrier类,CountDownLatch计数器以及Exchanger类使用