Semaphore的acquire方法用于确保存在可用资源。当存在可用资源时,线程会立即从acquire方法返回,同时信号量内部的资源个数会减1.如无可用资源,线程则阻塞在acquire方法内,直至出现可用资源。
Semaphore的release方法用于释放资源。释放资源后,信号量内部的资源个数会增加1。另外,如果acquire中存在等待的线程,
示例
多个线程使用数量有限的资源。
1 | import java.util.Random; |
运行结果
1 | Thread-0: BEGIN: used = 1 |