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

我试图在 classA 中包含一个等待函数,但我想notify()从 classB 中。我怎样才能做到这一点?


慕田峪7331174
浏览 193回答 1
1回答

慕标5832272

您在这里有多种选择。最简单的是创建一个对象,实际上是任何类型,并在两个类之间共享该对象。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 中了解更多相关信息它真的很便宜,但教你如何很好地使用所有这些并发技术。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java