考虑有两个线程正在等待执行同步块(synchronized block)。现在有机会有人在等待,在这种情况下我真的需要调用notify()吗?我认为当同步块(synchronized block)执行完成时,其他线程会释放锁吗? notify()方法的具体用途是什么?
线程专家请解释一下?
最佳答案
不,在这种情况下您不需要使用 notify()
。你是对的,必须等待获取锁的线程会在锁释放后自动继续执行。
notify()
方法与 wait()
方法结合使用。当一个线程调用 wait()
时,它可能会释放锁并开始等待。结束等待的条件之一是当另一个线程调用 notify()
时。 wait()
和 notify()
都必须在当前线程已同步
的实例上调用。
wait()
,直到生产者执行notify()
有更多数据可用。
关于Java线程notify()方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21544140/