Java 是否需要在同步块中使用thread wait()和notify()?

Java 是否需要在同步块中使用thread wait()和notify()?,java,concurrency,wait,notify,Java,Concurrency,Wait,Notify,在Java中,是否需要在synchronized块中使用threadwait()和notify()?否。Java将自动确保标记的部分由一个且仅由一个线程输入 另见这个问题: 嗯。。似乎有些语言问题 您不需要在同步块中使用wait和notify,但如果您想使用wait和notify,则必须在同步块中使用它们。否。Java将自动确保标记的部分由一个且仅由一个线程输入 另见这个问题: 嗯。。似乎有些语言问题 您不需要在同步块中使用等待和通知,但如果要使用等待和通知,则必须在同步块中使用它们。简

在Java中,是否需要在
synchronized
块中使用thread
wait()
notify()

否。Java将自动确保标记的部分由一个且仅由一个线程输入

另见这个问题:


嗯。。似乎有些语言问题


您不需要在同步块中使用wait和notify,但如果您想使用wait和notify,则必须在同步块中使用它们。

否。Java将自动确保标记的部分由一个且仅由一个线程输入

另见这个问题:


嗯。。似乎有些语言问题


您不需要在同步块中使用等待和通知,但如果要使用等待和通知,则必须在同步块中使用它们。

简而言之。在调用wait或notify之前,线程必须拥有对象的监视器。

简而言之。在调用wait或notify之前,线程必须拥有对象的监视器。

这个问题令人困惑,因为如果要使用wait(),它必须位于同步块内,但如果要使用同步块,则不必使用wait/notify,您询问的是哪种情况?当线程需要传递数据时,仅说“在我运行时不要在相同的数据上运行”是不够的,但每个线程必须告诉另一个线程“我有一些数据给您”。在这种情况下,我们需要线程等待并通知。因此,同步行为不同于wain/notify。这个问题令人困惑,因为如果要使用wait(),它必须在同步块内,但如果要使用同步块,则不必使用wait/notify,您要询问的是哪种情况?当线程需要传递数据时,仅仅说“在我运行时不要在相同的数据上运行”是不够的,但是每个线程必须告诉另一个线程“我有一些数据给你”。在这种情况下,我们需要线程等待并通知。因此,同步行为不同于wain/notify