关于线程池的shutdown

    mExecutor = Executors.newSingleThreadExecutor();
        mExecutor.submit(new Runnable() {
            @Override
            public void run() {
                while (true){
                    Log.d(TAG, "run: ----");

                    try {
                        Thread.sleep(3000);
                    } catch (InterruptedException e) {

                        e.printStackTrace();
                      
                        Log.d(TAG, "run: exeception++++++++");
                    }
             
                }
            }
        });

    @Override
    public void onClick(View v) {
        Log.i(TAG, "onClick: ");
        mExecutor.shutdownNow();

    }
  •    shutdown() 是在工作线程执行完当前以及预定的任务后回收;shutdownNow() 是立即结束,但这个结束不是 stop() 掉线程,而是 interrupt()(一般是)
  • shutdown调用后,不可以再submit新的task,已经submit的将继续执行。

    shutdownNow试图停止当前正执行的task,并返回尚未执行的task的list

  • 调用 shutdown 拒绝传入任务,然后调用 shutdownNow(如有必要)取消所有遗留的任务

posted on 2019-03-08 09:49  endian11  阅读(390)  评论(0编辑  收藏  举报

导航