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