场景是这样的,主线程里面创建了两个相同的thread,分别命名为A和B吧。
想实现的目的是,主线程可能在等待10秒钟,让子线程A和B去分别完成相同的任务,有可能由于某个原因,A和B执行所需的时间会不同,但是我想他们两者其中一个完成之后就马上唤醒主线程(如果是A先完成了,那么主线程就不等待B),然后主线程继续去执行其他任务。如果过去10秒钟,A和B都没完成任务,那么主线程就唤醒,继续完成其他的任务
请问一下大家有什么方式可以实现呢?
java 多线程子线程唤醒主线程问题
答案:2 悬赏:30 手机版
解决时间 2021-04-11 00:31
- 提问者网友:川水往事
- 2021-04-10 13:04
最佳答案
- 五星知识达人网友:一把行者刀
- 2021-04-10 13:30
设一个三个线程的共享对象o
a.start(); b.start();//启动子线程
主线程中
o.wait(10*1000);//主线程中等10秒
同时A、B中各有一个执行完的通知
a或b的run(){
.....
o. notify();
}
基本的线程操作...
a.start(); b.start();//启动子线程
主线程中
o.wait(10*1000);//主线程中等10秒
同时A、B中各有一个执行完的通知
a或b的run(){
.....
o. notify();
}
基本的线程操作...
全部回答
- 1楼网友:一叶十三刺
- 2021-04-10 15:03
java使用单纯的wait/notify是无法唤醒指定线程的
一般的做法是修改一个特定标识,然后notifyall,被唤醒的线程查看该标识是否指定自己处理,是就运行下去,不是就继续wait
还有一种做法是针对每一个线程做一个wait object,要唤醒哪一个就notify哪一个object就行了,但是能不能这样做去取决于你的业务需求
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯