本帖最后由 valid25f 于 2012-08-30 10:09:11 编辑

解决方案 »

  1.   

    public class Text implements Runnable {
    boolean panduan = false;
    public boolean isPanduan() {
    return panduan;
    }
    public void setPanduan(boolean panduan) {
    this.panduan = panduan;
    }
    public void run() {
    while (panduan) {
    System.out.println(Thread.currentThread().getName());
    }
    }
    public static void main(String[] args) throws InterruptedException {
    Text text1 = new Text();
    Thread t1 = new Thread(text1);
    text1.setPanduan(true);
    t1.start();
    Thread.sleep(2000);
    t1.interrupt();
    text1.setPanduan(false);

    Text text2 = new Text();
    Thread t2 = new Thread(text2);
    text2.setPanduan(true);
    t2.start();
    }
    }
      

  2.   

    首先,每个线程内部都有一个boolean型变量表示线程的中断状态,true代表线程处于中断状态,false表示未处于中断状态。而interrupt()方法的作用只是用来改变线程的中断状态(把线程的中断状态改为true,即被中断)。A线程调用wait,sleep,join方法,这时B线程调用了A的interrupt方法而抛出的InterruptedException是wait,sleep,join方法内部不断检查中断状态的值,自己抛出来的,并不是直接由interrupt方法直接引起的。
    抛出InterruptedException以后,线程又会回到非中断状态(false)。因此interrupt()方法代表着外界希望中断此线程,只是希望,具体怎么处理还是线程内部来做,一般情况下interrupt()方法可以使处于阻塞状态的线程抛出InterruptedException从而结束阻塞状态。
      

  3.   

    Thread.sleep(2000);
    t0.interrupt();
    这个是在主线程里面执行的,共3个线程使用CPU资源,随机执行其中一个,那个main线程有可能就执行不到
      

  4.   

    http://www.ticmy.com/?p=31