java 多线程子线程唤醒主线程问题

场景是这样的,主线程里面创建了两个相同的thread,分别命名为A和B吧。想实现的目的是,主线程可能在等待10秒钟,让子线程A和B去分别完成相同的任务,有可能由于某个原因... 场景是这样的,主线程里面创建了两个相同的thread,分别命名为A和B吧。
想实现的目的是,主线程可能在等待10秒钟,让子线程A和B去分别完成相同的任务,有可能由于某个原因,A和B执行所需的时间会不同,但是我想他们两者其中一个完成之后就马上唤醒主线程(如果是A先完成了,那么主线程就不等待B),然后主线程继续去执行其他任务。如果过去10秒钟,A和B都没完成任务,那么主线程就唤醒,继续完成其他的任务
请问一下大家有什么方式可以实现呢?
展开
 我来答
百度网友9308069
2016-07-16 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1931万
展开全部
设一个三个线程的共享对象o

a.start(); b.start();//启动子线程
主线程中
o.wait(10*1000);//主线程中等10秒
同时A、B中各有一个执行完的通知
a或b的run(){
.....
o. notify();
}
基本的线程操作...
更多追问追答
追问
感谢你的回复
我试验时启动运行了两条主线程,然后发现第一条能够达到预期效果,但是第二条的时候就不会主动唤醒主线程。
主线程:
Object obj = new Object();//共享对象
.....

synchronized (obj){obj.wait(10000L);}
子线程:
run(){
synchronized (obj){
obj.notify();
}
}
追答
这个只能唤醒一次,子线程谁先完谁唤醒...ab都可以唤醒..
再次等待就要再次wait
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式