我试图在classA中包含一个等待函数,但是我想从classB中notify()
。我该如何实现?
答案 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
了解更多信息它确实很便宜,但可以教您如何很好地使用所有这些并发技术。