Java信号量——Semaphore
基本概念
Semaphore是一个计数信号量,它可以用来控制对某一资源的访问数量。在Java中,Semaphore位于java.util.concurrent包中
Semaphore的用途
流量控制:Semaphore可以用来控制同时访问特定资源的线程数量,例如数据库连接、文件句柄等
分配资源:Semaphore可以用来分配有限数量的资源,例如线程池、线程队列等
Semaphore的使用技巧
- 创建Semaphore
1 | Semaphore semaphore = new Semaphore(5); |
- 获取信号量
1 | semaphore.acquire(); |
请求一个信号量,这时候的信号量个数-1(是尝试获取,如果是>0就减去, 否则阻塞等待信号量>0)
- 释放信号量
1 | semaphore.release(); |
信号量+1
- 使用tryAcquire方法
1 | boolean acquired = semaphore.tryAcquire(); |
上述代码尝试获取信号量,如果成功则返回true,否则返回false
- 使用tryAcquire(long timeout, TimeUnit unit)方法
1 | boolean acquired = semaphore.tryAcquire(1000, TimeUnit.MILLISECONDS); |
上述代码尝试获取信号量,如果成功则返回true,否则在指定的时间内返回false
力扣1116 打印零与奇偶数
https://leetcode.cn/problems/print-zero-even-odd/description/
1 | class ZeroEvenOdd { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 cloud_fly blog!