-
Semaphore是信号量的意思。当多个线程竞争获取多个资源时,可以有序使用。
public class SemaphoreTest { public static void main(String[] args) { //3个资源 Semaphore semaphore = new Semaphore(3); for (int i = 1; i <= 6; i++) { new Thread(()->{ try { //获取一个资源 //如果当前没有空闲资源则等待 semaphore.acquire(); System.out.println("线程"+Thread.currentThread().getName()+"获得一个资源"); //休眠随机秒 模拟资源正在使用 TimeUnit.SECONDS.sleep(new Random().nextInt(5)); System.out.println("线程"+Thread.currentThread().getName()+"释放资源"); } catch (InterruptedException e) { e.printStackTrace(); }finally { //资源使用完成 释放 semaphore.release(); } },String.valueOf(i)).start(); } } }
执行结果
-
Semaphore使用步骤
-
设置一个信号量
//3个资源 Semaphore semaphore = new Semaphore(3);
-
尝试获取资源
//获取一个资源 //如果当前没有空闲资源则等待 semaphore.acquire();
-
释放资源
//资源使用完成 释放 semaphore.release();
-
十四、Semaphore使用
最新推荐文章于 2024-09-09 14:40:58 发布