当前位置: 代码迷 >> J2SE >> 判断两个线程哪位高手先执行完毕
  详细解决方案

判断两个线程哪位高手先执行完毕

热度:9538   发布时间:2013-02-25 00:00:00.0
判断两个线程谁先执行完毕
线程A和线程B并发执行不同的任务,判断哪个线程先完成,然后得到一个返回值,就另外一个未执行完的停止掉。

这个怎么实现呢?

------解决方案--------------------------------------------------------
static boolean tmp = true;

public static void getTmp(){
synchronized (tmp){
return tmp ;
}
}

public static void done(){
synchronized (tmp){
tmp = false;
}
}

ThreadA{
run(){
while(getTmp()){
// do something ...
if(...){
done();
}
}
}
 }

ThreadB{
run(){
while(getTmp()){
// do something ...
if(...){
done();
}
}
}
 }
------解决方案--------------------------------------------------------
例如主线程的类叫Main, Main中持有A, B的对象
A, B都用一个变量去控制线程是否结束,用下面的模式
A, B里有一个共享的Main对象main.
public void run() {
while (!stopped) {

}

main.stop();
}

public void setStop(boolean stopped) {
this.stopped = stopped;
}

Main的stop()方法去调用A,B的setStop(true) [如果你想狠点,直接调用interrut方法结束线程],这样,A,B中有一个线程结束时,都会全被约束
  相关解决方案