优雅这一说,其实就是在该线程即将结束时,让其做一部分收尾工作,最后再将其结束。
对于多线程情况下,一个线程要结束其他线程
- 需要保证,结束该线程的时候释放其运行的支援。于是stop()方法就不行,该方法会致使最后线程资源无法释放,可能永远无法释放。
优雅 即是 运用interruted()方法,来实现这一优雅。
那么给大家列个类举个例子
class TwoTerminna {
private Thread monitor;
public TwoTerminna() {
}
public void start() {
monitor = new Thread(() -> {
while (true) {
Thread curren = Thread.currentThread();
if (curren.isInterrupted()) {
System.out.println("结束工作");
break;
}
try {
Thread.sleep(1000);
System.out.println("监控记录");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//111111111111111
curren.interrupt();
}
}
});
monitor.start();
}
public void stop() {
monitor.interrupt();
}
}
public class test3 {
public static void main(String[] args) throws InterruptedException {
TwoTerminna t1 = new TwoTerminna();
t1.start();
Thread.sleep(5000);
t1.stop();
}
开始给大家做一些解释:
因为线程是并发的,在结束线程面临。
- 正常运行时被结束
- 睡眠时被结束(涉及到interrupted()对应会清空打断状态)
第一种情况:正常处理
第二种情况:注释111111111处理
好啦,多线程的interrupted就到这里。。。