如何在Java中通过使用不同的类来使用wait()和notify()

时间:2018-10-11 16:05:17

标签: java netbeans concurrency

我试图在classA中包含一个等待函数,但是我想从classB中notify()。我该如何实现?

1 个答案:

答案 0 :(得分:0)

您在这里有多个选择。最简单的方法是创建一个实际上任何类型的对象,并在两个类之间共享该对象。

java中的任何对象都可以具有notify()和wait()方法。

因此您可以创建一个对象

Object sharedObject = new Object();

然后将该对象传递给两个类(或更准确地说,是这些类的实例)

ClassA a = new ClassA(sharedObject);
ClassB b = new ClassB(sharedObject);

然后在ClassA中的某些方法中可以调用:

synchronized(sharedObject) {
     sharedObject.wait();
}

在一个线程上,然后在另一个线程上,您可以通过调用以下命令将其唤醒:

synchronized(sharedObject) {
     sharedObject.notify();
}

这是执行此操作的基本方法。 请注意,在等待或通知之前,您需要在该对象上进行同步。

有一种使用条件变量的更高级,更强大的方法。

您可以通过此出色的在线课程https://www.udemy.com/java-multithreading-concurrency-performance-optimization/?couponCode=CONCURRENCY

了解更多信息

它确实很便宜,但可以教您如何很好地使用所有这些并发技术。