public class MyThread extends Thread {
        private volatile   boolean isRunning = true;        public void stopThread(){
            isRunning=false;
        }        @Override
        public void run() {
            super.run();
            ExecutorService pool = Executors.newFixedThreadPool(1);
            while (isRunning) {
                pool.execute(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Thread.sleep(2000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        Log.e(TAG, "test___"+(i++));
                    }
                });
            }
        }
    }
我调用了stopThread后,但是还是会打印  Log.e(TAG, "test___"+(i++))中的内容。求正确停止的方法、

解决方案 »

  1.   

    其实你停止的线程是外面创建线程池的线程。而你真正打印的,是线程池里的线程。简单来说,就算是你线程池的执行事情和外面的while执行速度一下,预计也是停止线程2s之后停止打印。可事实是创建的速度远比你打印的速度快。你可以等等看,应该是总会结束的。
      

  2.   

    你说的对,如果我要实现调用stopThread的时候,后续没有打印。该怎么弄呢?
      

  3.   

    楼主 占个地方哈!    大家帮我看看这个地方怎么用集合遍历啊!我试了几次都不成功啊!谢谢     http://bbs.csdn.net/topics/391898536 
      

  4.   

    while(isRunning){
    ......
    }
    pool.shutdownNow();
      

  5.   


    在打印之前,判断是不是真的isRunning