当先锋百科网

首页 1 2 3 4 5 6 7

在多线程编程中,线程间通信是一个重要的问题。Java 5 引入了一种新的机制,即 await 和 signal 方法,可以解决线程间通信的问题。

await 方法是在 Lock 对象上调用的,它使线程进入等待状态,直到其他线程调用相同的 Lock 对象的 signal 方法或 signalAll 方法,唤醒它。

// 线程1
lock.lock();
try {
while (!condition) {
condition.await(); // 等待线程2修改 condition
} 
// 其他操作
} finally {
lock.unlock();
}
// 线程2
lock.lock();
try {
condition.signal();
// 其他操作
} finally {
lock.unlock();
}

上面的代码演示了 await 方法的使用,它使线程1等待,直到线程2修改 condition 的状态。线程2调用 signal 方法后,线程1被唤醒,继续执行。

与之相似的方法还有 awaitUninterruptibly 和 awaitNanos 等,可以根据具体情况选择使用。

线程间通信是多线程编程中常见的问题,await 和 signal 方法提供了一种简单、可靠的解决方案,是值得使用的机制。