你的线程可能正在休眠或阻塞!
先调用thread.interrupt()将其从休眠或阻塞状态唤醒,这时会从休眠或阻塞代码中抛出InterruptedException异常,可以在catch语句中退出

解决方案 »

  1.   

    程序我还没做全,总的意思就是我用runnable接口方式,生成了一个线程my_thread,并在点击一按钮时用my_thread.start()启动了线程,而我想在点击另一按钮是停下线程该怎么做。我用的是jdk1.3好像stop方法以作废,所以我用了一布尔条件while(startable),但是只能启动而不能用startable=false;使其停下。
      

  2.   

    to kz
    能不能将解决方法说详细一点。
      

  3.   

    nie,关键是你那变量赋值后,在run里并没有重新检测,所以没有反应
    可以考虑zk的方法试试将工作线程interrupt,但如果run里的代码需要执行的时间很长,
    或者压根就是死熊环,则zk说的方法就不一定行的通,唯一的方法就只有调用线程的stop
    方法,当然比较危险,这样可能导致锁混乱(具体的我也不是很清楚),所以在jdk 的文
    档里他建议采用一变量来控制(但你也要给他判断的机会:)欢迎批评
      

  4.   

    to borz:
    其实我已经在run()中用了startable=getstatue();的方法从主线程中取得startable变量.
    而且,stop()也没法停下.我想问题会不会是只能在线程体(run)中停止线程.
      

  5.   

    不会吧,stop也停不下来?
    我们上OICQ谈好吗?22181113
      

  6.   

    你没有用两个线程实现当然是这样,你的jstop()根本没有机会执行!!!
    ------仅供参考------
      

  7.   

    我的调用程序如下
        public boolean lift(int x, int y) {
    pressed = false;
    repaint();
    if (inside(x, y) && flag1.equals("start")){
        jstart();
    }
    if (inside(x, y) && flag1.equals("stop")){
             jstop();
    }
    return true;
        }
      

  8.   

    to robber
    程序有点长,都要吗,还是只要线程部分.
      

  9.   

    对不起!这两天休息
    Button2_Click(){//需要停止线程的按钮
    thread.interrupt();
    }
    线程无法退出的原因为:
    1,休眠或阻塞,本方法适用
    2,大的循环,采用//方法退出
    for(i=1;i<100000000000;i++){
    if(exit) break;//
    }