当一个线程调用
但我想知道调用
wait()
时,它会被阻塞并等待一些通知。但我想知道调用
notify()
的线程会发生什么。当前线程被阻塞,然后在通知点返回执行吗?wait()
时,它会被阻塞并等待一些通知。notify()
的线程会发生什么。当前线程被阻塞,然后在通知点返回执行吗?notify()
方法被调用时,当前线程不会受到影响,它会继续运行直到自然结束。
wait()
和 notify()
方法必须在一个 synchronized
上下文中调用。当包含 notify()
调用的 synchronized
块执行完毕后,该锁就可用了,此时另一个线程中包含 wait()
调用的块就可以继续执行了。
调用 notify 只是将等待的线程移到可运行线程池中。一旦锁可用,该线程就可以立即继续执行。
notifyAll()
来通知所有正在等待的线程。简单调用notify()
不足以实现此功能。 - Rudi Kershaw在理想条件下,当线程完成执行后,会调用notify()以返回到调用线程。 但如果在完成之前使用notify(),则该线程将继续正常执行,直到达到自然结束。
notify
的线程。) - Jon Skeetnotify()
是一个非阻塞调用。它的执行方式与任何其他“普通”语句一样。 - awksp