关于线程池的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
浙公网安备 33010602011771号