正确的线程循环写法:
用一个boolean变量或者 线程的Interrupted标志位来判断。
private class Interrupted implements Runnable {
private volatile boolean isRun = true;
public Interrupted() {
}
@Override
public void run() {
while (isRun && !Thread.currentThread().isInterrupted()) {
//todo 耗时操作
}
}
private void cancle() {
isRun = false;
}
}
停止线程时,调用,Thread.interrupted(); 或者 该类实例的cancle()方法。
注意事项:
Thread.currentThread().isInterrupted() 会在两种情况下返回false;
- 抛InterruptedException 异常的时候。
- 线程已经终止的时候。