首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2012-11-07 
判断两个线程谁先执行完毕线程A和线程B并发执行不同的任务,判断哪个线程先完成,然后得到一个返回值,就另外

判断两个线程谁先执行完毕
线程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中有一个线程结束时,都会全被约束

热点排行