將方法interrupt()與return結(jié)合使用也能實現(xiàn)停止線程的效果隆檀。
/**
* MyThread線程測試
* @author wuyoushan
* @date 2017/3/21.
*/
public class MyThread extends Thread {
@Override
public void run() {
while (true){
if(this.isInterrupted()){
System.out.println("停止了!");
return;
}
System.out.println("timer="+ System.currentTimeMillis());
}
}
}
/**
* @author wuyoushan
* @date 2017/3/20.
*/
public class Run {
public static void main(String[] args){
try{
MyThread thread=new MyThread();
thread.start();
Thread.sleep(200);
thread.interrupt();
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
運(yùn)行結(jié)果為:
timer=1490575062355
timer=1490575062355
timer=1490575062355
timer=1490575062355
timer=1490575062355
timer=1490575062355
timer=1490575062355
停止了粹湃!
不過還是建議使用“拋異晨致兀”的方法來實現(xiàn)線程的停止,因為在catch塊中還可以將異常向上拋为鳄,使線程停止的事件得以傳播裳仆。
摘選自 java多線程核心編程技術(shù)-1.7.8