“嗨,阿米戈!”
“嗨,里希!”
“我将向您介绍 Object 类的wait、notify和notifyAll方法。”
“今天我们只是熟悉一下它们,但我们稍后会回来,花更多时间在这上面。”
“好的。”
“这些方法是作为线程同步机制的一部分而发明的。”
“让我提醒你,Java 有一个内置的机制来控制不同线程对共享资源(对象)的访问。一个线程可以声明一个对象处于忙碌状态,其他线程将不得不等待,直到这个忙碌的对象被释放。 “
“我记得。你用同步关键字来做到这一点。”
“对。通常,代码看起来像这样:”
public void print() { Object monitor = getMonitor(); synchronized(monitor) { System.out.println("text"); } }“还记得它是如何工作的吗?”
“是的。如果两个线程同时调用 print() 方法,其中一个线程将进入标记为 synchronized 的块并锁定监视器,这使得第二个线程将等待直到监视器被释放。”
“对。一旦一个线程进入标记为synchronized的块,monitor对象就被标记为busy,其他线程将被迫等待monitor对象被释放。同一个monitor对象可以在程序的各个部分使用。 “