在对象类中而不是在Thread类中声明notify(),notifyall()和wait()有什么用?
答案 0 :(得分:1)
线程使用共享对象彼此同步。这个方法被调用的是这个共享对象,它不是一个线程。顺便说一句,文档明确建议永远不要在Thread实例上使用这些方法,因为这会混淆事情。
例如,让我们说你有一个线程在自助餐中添加碟形,并且有几个线程试图从这个自助餐中取出菜肴。自助餐将是同步点:填充线程将在共享自助餐上调用notifyAll()
一旦它添加了一道菜,以唤醒等待自助餐的线程。
答案 1 :(得分:0)
这些方法在Object中为线程提供同步的方法(例如通过锁):
synchronize(lock) {
lock.wait(); // Will block until lock.notify() is called
}
// Later on the same day in another thread...
synchronize(lock) {
lock.notify(); // Will wake up lock.wait()
}
此行为不是特定于线程的,因此不在Thread类
中