java 多线程子线程唤醒主线程问题
场景是这样的,主线程里面创建了两个相同的thread,分别命名为A和B吧。想实现的目的是,主线程可能在等待10秒钟,让子线程A和B去分别完成相同的任务,有可能由于某个原因...
场景是这样的,主线程里面创建了两个相同的thread,分别命名为A和B吧。
想实现的目的是,主线程可能在等待10秒钟,让子线程A和B去分别完成相同的任务,有可能由于某个原因,A和B执行所需的时间会不同,但是我想他们两者其中一个完成之后就马上唤醒主线程(如果是A先完成了,那么主线程就不等待B),然后主线程继续去执行其他任务。如果过去10秒钟,A和B都没完成任务,那么主线程就唤醒,继续完成其他的任务
请问一下大家有什么方式可以实现呢? 展开
想实现的目的是,主线程可能在等待10秒钟,让子线程A和B去分别完成相同的任务,有可能由于某个原因,A和B执行所需的时间会不同,但是我想他们两者其中一个完成之后就马上唤醒主线程(如果是A先完成了,那么主线程就不等待B),然后主线程继续去执行其他任务。如果过去10秒钟,A和B都没完成任务,那么主线程就唤醒,继续完成其他的任务
请问一下大家有什么方式可以实现呢? 展开
展开全部
设一个三个线程的共享对象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();
}
基本的线程操作...
更多追问追答
追问
感谢你的回复
我试验时启动运行了两条主线程,然后发现第一条能够达到预期效果,但是第二条的时候就不会主动唤醒主线程。
主线程:
Object obj = new Object();//共享对象
.....
synchronized (obj){obj.wait(10000L);}
子线程:
run(){
synchronized (obj){
obj.notify();
}
}
追答
这个只能唤醒一次,子线程谁先完谁唤醒...ab都可以唤醒..
再次等待就要再次wait
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |