关于线程池的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(如有必要)取消所有遗留的任务
Dana.Lee
To:Dana_Lee1016@126.com