为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪7331174 2021-11-11 18:12:34
我试图在 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 中了解更多相关信息


它真的很便宜,但教你如何很好地使用所有这些并发技术。


查看完整回答
反对 回复 2021-11-11
  • 1 回答
  • 0 关注
  • 192 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信