比如我建了2个线程
Thread t1=new Thread();
Thread t2=new Thread();
建立的时候这2个线程是无关的,那么怎么才能做到等一个结束时,立马让另一个也结束?
(这里只是用2举例,实际是好多线程)
谢谢

解决方案 »

  1.   

    然后呢,他们说用stop结束不安全
      

  2.   

    不停运行的线程肯定是在个循环中吧?在while里判断个数,不满足就不进入循环,线程就会在之后终止了
    如果更精确点,在while中几个点判断,如果不满足,break就行了,这里不需要stop或者interrupt
      

  3.   

    给你一个例子 希望你能看出点眉目, 该例子的主线程 结束时,通过调用 shutdown方法,结束新建的一个线程t,此两者都是正常死亡,想利用另一个线程结束一个线程 最好这样做,因为Stop太暴力已经在API中显示 “过时”了
    class Runner4 implements Runnable{
    private boolean flag = true;
    int i ;
    public void run(){
    while(flag)
    System.out.println("  " + i ++);
    }
    public void shutdown(){
    flag = false;
    }
    }public class TestThread4 {
    public static void main(String[] args) {
    Runner4 r = new Runner4();
    Thread t = new Thread(r);
    t.start();
    for(int i = 0; i < 100000; i++){
    if(i % 10000 == 0 && i != 0)
    System.out.println("in thread main i = " + i);
    }
    System.out.println("Thread Main is over");
    r.shutdown();
    }}
      

  4.   

    抽象一点说吧,你可以为每组需要一起结束的线程创建一个对象实例,在里面定义一个标志变量。你可以在任何希望这组线程结束的时候,用任何方法给这个标志变量置位。另一方面,每个线程都要在内部执行的过程中不停地“观察”这个标志变量,(这个对象实例应该是创建线程对象的时候就传递进去),如果是忙着执行计算,就要周期性访问标志变量的值,如果是空闲等待,就要通过 wait() 方式保持关注,一旦发现标志变量置位,则尽快主动结束自己。■□■□■□■□■□■□■□■
    □             □
    ■  忍以明志 勤以致远  ■
    □             □
    ■□■□■□■□■□■□■□■
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)