平時在做線程任務(wù)停止的時候,可能很多情況下都是使用一個退出標志,使線程正常退出,也就是run方法完成后線程終止。這里我們說一下使用interrupt()方法來停止線程。
首先,調(diào)用interrupt()方法僅僅是在當前線程中打了一個停止的標記狀態(tài),并沒有停止線程內(nèi)的任務(wù),這時就可以結(jié)合線程的interrupted()完成線程的停止。
class MThread extends Thread {
int i = 0;
@Override
public void run() {
super.run();
try {
while (true) {
if (this.interrupted()) {
throw new InterruptedException();
}
//TODO 線程業(yè)務(wù)邏輯
System.out.print("i=" + (i++));
}
} catch (InterruptedException e) {
e.printStackTrace();
//TODO 處理線程中斷
}
}
}
MThread mThread = new MThread();
mThread.start();
mThread.interrupt();
當然也可以使用return;來控制程序的停止,但這里對線程中斷的處理就不會像使用“拋異?!狈ㄟ@么的優(yōu)雅,使用異常流能更好、更方便地控制程序的運行流程。