我试图在 classA 中包含一个等待函数,但我想notify()从 classB 中。我怎样才能做到这一点?
1 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
您在这里有多种选择。最简单的是创建一个对象,实际上是任何类型,并在两个类之间共享该对象。
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 中了解更多相关信息
它真的很便宜,但教你如何很好地使用所有这些并发技术。
添加回答
举报
0/150
提交
取消