BinarySemaphore 使用方法
时间: 2024-03-07 14:47:48 浏览: 9
BinarySemaphore是Java中的二进制信号量,也称为互斥锁。它只有两种状态:可用和不可用。当它被设置为不可用时,其他线程就无法再获取该锁,直到该锁被释放为止。下面是BinarySemaphore的使用方法示例:
```java
import java.util.concurrent.Semaphore;
public class BinarySemaphoreExample {
private Semaphore binarySemaphore = new Semaphore(1); // 初始许可证数量为1,即可用状态
public void method() {
try {
binarySemaphore.acquire(); // 获取许可证,即获取锁,如果没有许可证就会阻塞等待
// 这里是对共享资源的操作
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
binarySemaphore.release(); // 释放许可证,即释放锁
}
}
}
```
在上面的示例中,我们创建了一个Semaphore对象,它的初始许可证数量为1,即可用状态。在method()方法中,我们先通过acquire()方法获取许可证,即获取锁,如果没有许可证就会阻塞等待。然后进行对共享资源的操作。最后在finally块中通过release()方法释放许可证,即释放锁。
需要注意的是,对于BinarySemaphore的使用,要保证互斥性,即只有一个线程能够获取锁,其他线程必须等待。同时,要避免死锁的发生,即锁被某个线程获取后,无法释放,导致其他线程一直等待。