上面的兄弟interrupt()中断可以停止线程吗?好像中断只对sleep()或wait()了之类的线程有效吧
你没有保存VeryLongProcedure的引用,好像没办法停止

解决方案 »

  1.   

    当run()返回时(return)时,线程终止
      

  2.   

    VeryLongProcedure vlp;
    public void run() {
    vlp=new VeryLongProcedure();
    }
    那如果这样怎么中止?就在外部调用vlp=null可以吗?不过反正现在我暂时用stop()还管用,没出什么问题,可能以后会出deadlock之类的问题,继续顶!
      

  3.   

    我才试了一下,把vlp设成null了,它还在运行,根本没用,请问除了stop()之外就没其他方法了吗?可是sun又强烈反对用stop(),我在VeryLongProcedure里有网络和数据库之类的操作,也怕会出问题啊!
      

  4.   

    http://www.zdnet.com.cn/developer/code/story/0,2000081534,39276905-2,00.htm
    http://dev.csdn.net/article/54/54702.shtm
    一般建议的方法是使用boolean变量 在while(false)这样跳出
    interrupt()也是没办法的办法
      

  5.   

    同意zealVampire(蚊子+鹤舞白沙) 的意见。
    一般,如果线程有“死”循环,最好考虑通过标志状态来决定线程的“生死”,线程结束最保险的作法是让线程结束run方法,stop/interrupt并不能保证结束线程。
      

  6.   

    对啊!我们没办法控制线程的结束,唯一的办法就是想办法结束run()方法
    而处理一个比较复杂的线程的时候,一般做法就是循环判断一个boolean
      

  7.   

    一般建议的方法是使用boolean变量 在while(false)这样跳出
    interrupt()也是没办法的办法
    ---------------
    可他没有用循环,而是一个耗时很长的方法,怎么能中止这个方法呢?
      

  8.   

    那只能从那个方法入手.java不推荐强制停止,要自己控制
      

  9.   

    请不要再向我推荐interrupt()了,楼上的也讲过,我自己也亲身试过,根本就没用。你们说从那个方法入手,是不是在每行之间都插一条if(isStopped==true) return false;我那段本来就超级长的程序竟然要double长啊?