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类使用

Java多线程同步工具类之Semaphore

Java并发工具类Semaphore

Linux(内核剖析):31---内核同步之(信号量(semaphore)读写信号量(rw_semaphore))

python多线程编程—同步原语入门(锁Lock信号量(Bounded)Semaphore)