我的线程是这样启动的Runnable runnable = new Runnable() {
            public void run() { //这里写要运行的代码
             types();//要运行的方法,是一个复制文件的方法
            }
        };
        Thread clock = new Thread(runnable);
        clock.start();
我怎样停止这个线程,让他不再对文件进行复制

解决方案 »

  1.   

    stop();不安全
    thread.interrupt();不好使 能详细一点吗?
    好像有一个用while()的  怎么用? 或者有其他更好的办法吗?
      

  2.   

    像stop()这个方法不提倡用
    跟本没有必要停止线程啊
    相想办法控制复制文件的方法结束或者不让他进入了,不就可以不让复制文件了么
      

  3.   

    可以让线程自然终止,设置一个运行标识,boolean run = true;
    通常复制文件会有个循环:
    while (run && ...) {
    }
    要停止这个线程,只要设置run = false;就自然终结了。
      

  4.   

    Thread.stop();会终止当前线程,并回收资源。也许当前的线程有些资源被其他线程用到,所以不安全,最好用interrupt(),注意要抛出一个异常
      

  5.   

    退出循环就可以了。至于stop(),那东西早就不用了,很不安全的
      

  6.   

    恩, 停线程多半都用条件控制,用shop 和interrupte 都不好。
      

  7.   

    首先说下 stop和interrupte这两个东西都不要用,stop是将你的一棍子打死!!interrupte是当你睡觉的时候给你泼盆冷水!!!!都不安全。所以,楼主第一种方法是把types()放入while(flag){types()}或if(flag){types()}中,flag是布尔类型的,通过需要来设置flag的值来决定是否执行types()方法。第二种,可以在types()方法前面加上return;来结束这个run()函数,也就结束了线程。第三种方法,可以使用try catch语句来实现跳转(注意run方法是重写,主方法里面没有抛出异常,所以run方法不能抛出异常,但可以在重写的run()方法里面利用try catch来实现跳转),如:try{throw new Exception();types}catch(Exception e){types()后面的语句;},我所知道的就这些了,希望能对楼主有用!