Semaphore 也是一个线程同步的辅助类,可以维护当前访问自身的线程个数,并提供了同步机制。
使用 Semaphore 可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数。
测试案例
package com.personal.test.countdownlatch;import lombok.SneakyThrows;import java.util.concurrent.CyclicBarrier;public class CyclicBarrier00 {public void test00() {CyclicBarrier cyclicBarrier = new CyclicBarrier(2);new Thread(new Runnable() {@SneakyThrows@Overridepublic void run() {System.out.println(Thread.currentThread().getName() + " 准备开始");cyclicBarrier.await();System.out.println(Thread.currentThread().getName() + " 处理完成");}}).start();new Thread(new Runnable() {@SneakyThrows@Overridepublic void run() {System.out.println(Thread.currentThread().getName() + " 准备开始");Thread.sleep(2000);cyclicBarrier.await();System.out.println(Thread.currentThread().getName() + " 处理完成");}}).start();}public static void main(String[] args) {CyclicBarrier00 cyclicBarrier00 = new CyclicBarrier00();cyclicBarrier00.test00();}}
