在Java中,可以使用synchronized
关键字来保持一个线程长时间锁定。以下是一个示例代码:
public class LongTimeLockExample {
private boolean isLocked = false;
public synchronized void lock() throws InterruptedException {
while (isLocked) {
wait(); // 如果已经被其他线程锁定,则当前线程等待
}
isLocked = true;
}
public synchronized void unlock() {
isLocked = false;
notify(); // 通知其他等待的线程可以尝试获取锁
}
}
在上面的代码中,我们使用synchronized
关键字来定义lock()
和unlock()
方法。lock()
方法会在被其他线程锁定时等待,直到锁可用。unlock()
方法会释放锁,并通知其他等待的线程可以尝试获取锁。
这种方式可以确保一个线程长时间锁定,直到它主动释放锁。其他线程可以在锁被释放时尝试获取锁。