1. 引言
在Java中,我们有一个wait()/notify() API。这个API是线程间同步的一种方式。为了使用这个API的方法,当前线程必须拥有被调用者的监视器。
在本教程中,我们将探讨为什么这个要求是有意义的。
2. wait()的工作原理
首先,我们需要简要讨论一下Java中wait()的工作原理。根据JLS,Java中每个对象都有一个监视器。基本上,这意味着我们可以对我们喜欢的任何对象进行同步。这可能不是一个很好的决定,但这就是我们现在所拥有的。
有了这个,当我们调用wait()时,我们隐式地做了两件事。首先,我们将当前线程放入JVM内部等待集,用于这个对象监视器。第二,一旦线程进入等待集,我们(或者说JVM)释放了这个对象的同步锁。在这里,我们需要澄清——这个词this指的是我们调用wait()方法的对象。
大约 4 分钟