interrupt()可以终止线程吗??!!!同感中!!希望大家给点建议???

解决方案 »

  1.   

    根据我的经验认为,你的监视线程并未起作用!interrupt()并不会使线程停止!如要简单当然可以用Stop(),但这是不安全的,会导致同步资料不释放!一般在while循环中用(!Interrupted())为条件,另要加入一个变量,如boolean 变量作为条件!一般还是捕获interrupt()产生的IOException异常!
    例:
    boolean isStop=false ;//定义为类元素while(!Interrupted() && !isStop){
    try{
    //to do something
    }catch(IOException e){
    break; //退出循环
    }
    }
    要终止线程只要使isStop为真或调用interrrup()方法就可以了!
    你这里要用interrupt(),因为你是要中断正在进行中的任务!
    若不要中断正在进行中的任务就使isStop为“真”会更安全!
    第二个线程(监视线程)不用interrupt()真接用break中断循环就可以了!
      

  2.   

    有点错误!准确的说是InterrruptedException,因为我正在做一个程序,就直接copy 过来了,正确的应是这样!
    boolean isStop=false ;//定义为类元素while(!Interrupted() && !isStop){
    //to do something
    try{
    sleep(50);
    }catch(InterruptedException e){
    break;
    }
      

  3.   

    对于
    while(!Interrupted() && !isStop){
    //to do something
    try{
    sleep(50);
    }catch(InterruptedException e){
    break;
    }
    而言,如果 不是sleep(50),, 而是一个IO操作,例如, in.read(),则有可能出现阻塞的问题。
    采用 Interrupte()好象只能等到 in.read()返回后才能中断线程。
      

  4.   

    应该说最好在线程中加入Sleep()或者Wait()之类的语句。给其他线程执行的机会至于Interrupt()他不会立刻终止线程,必须等到线程运行某个操作结束。最好是调用Wait().
      

  5.   

    所以说,遇到阻塞模式的IO访问很就麻烦了。
    好在JDK1.4已经支持了 非阻塞模式的I0访问方式。