线程A和线程B并发执行不同的任务,判断哪个线程先完成,然后得到一个返回值,就另外一个未执行完的停止掉。这个怎么实现呢?

解决方案 »

  1.   

    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();
                }
           }
         }
     }
      

  2.   

    例如主线程的类叫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中有一个线程结束时,都会全被约束