java里面如何停止一个运行的线程?
 谢谢 !!

解决方案 »

  1.   

    知道的回复下?java网络编程中如何停止或杀死一个线程??
      

  2.   

    不是可以设置一个flag标志变量吗?
    我也是初学者,说错了可不要笑我啊!class Test
    {
            public static void main(String[] args)
            {
                  Thread_1 th=new Thread_1();
                  th.start();
                  //th.stopT_1();    如果想停止Thread_1线程就调用stopT_1()方法.
            }
    }
    class Thread_1 extends Thread
    {
            boolean flag=false;
            public void run()
            {
                  while(!flag)
                  {
                         System.out.println(getName());
                  }
            }
            public void stopT_1()
            {
                  flag=true; 
            }
    }还有Thread.interrupt()这个方法啊,自己再参考一下API文档吧! 
      

  3.   

    尽量不这么做,因为线程的 stop 方法已经被定义为不安全的。每个线程都要有停止的条件。最简单的莫过于:
    public class MyThread extends Thread {
        public boolean stop = false;    public void run() {
            while(!stop) {
                ...
            }
        }
    }
      

  4.   

    应该是这样吧
    private boolean flag=true;public void run(){
      while(flag){
      }
    }public void stop(){
      falg=false;
    }
      

  5.   

    boolean   flag=true;   
        
      public   void   run(){   
              while(flag){   
                      .......   
              }   
      }   
        
      上面是线程中的run方法,不干预则一直在线程循环中   
      停止只需要在外部改变flag=false,线程就自然终止了。
      

  6.   

    我的程序是socket编程的,在run()方法中,server监听client产生阻塞,我用flag标志来阻断它,但是没有效果啊?
      

  7.   

    有些线程除非你exit,否则中断不了,最简单的就是访问blockqeue
      

  8.   

    我的想法是在图形界面下的一个按钮来实现这个线程的启动与停止?
     但是,为什么线程一停止,我的整个程序(Frame)也跟着退出呢?
    请各位指教!!!
      

  9.   

    你可以在socket申明的时候就设置好timeout时间,应该不会一致阻塞,过了timeout时间,如果还没有接受到数据就会ioexception.
      

  10.   


    估计你是在main里启动了一个线程,后面没有其它动作方式主线程的终止,
    如果主线程终止,则其它所有线程终止后,程序就会退出。在你启动线程后,如果没啥事儿干,可以加一个System.in.read();
      

  11.   

    在while循环时加个flage控制跳出循环就可以了啊
      

  12.   

    设个标记量,控制线程。
    boolean  flag=true;   
      public  void  run(){  
              while(flag){  
                  ///        
      }  
      }  
      

  13.   


    flag标志不管用的,试过了
      

  14.   

    你是不是把主控制器也做成现成了?
    我就是这样做的,所以最好你这样布局:
    1.主控制器;
    2.控制界面;
    3.被控制的工作线程;你在控制界面按下按钮后,你传参数给主控制器,然后让主控制器去stop被控制的工作线程,(你如果把主控制器也做成了线程,程序当然退出了)
      

  15.   

    socket一直在accept,没有来的及判断调节flag啊,用下interrupt吧
      

  16.   

    public class MyThread extends Thread {
        public boolean isExit = false;    public void run() {
            while(!isExit ) {
                ...
            }
        }
        public void stop(){
           isExit = true;
        }
    }
      

  17.   

    先设一个boolean flag=true;
    让它停止执行,设flag=false;
    这个常用来停止线程的方法
      

  18.   

    join();合并线程,相当于方法调用,要比stop()好。