两阶段终止
package com.example.demo.hmjuc;
import java.util.concurrent.TimeUnit;
public class Test5 {
public static void main(String[] args) {
TowPhaseTermination towPhaseTermination = new TowPhaseTermination();
towPhaseTermination.start();
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(" 打断线程");
towPhaseTermination.stop();
}
}
class TowPhaseTermination {
private Thread monitor;
public void start() {
monitor = new Thread(() -> {
while (true) {
System.out.println(" 执行 ");
// 这个静态方法也可以获取中断标记 但是获取完后 会自动清除即如果是 true 就会变成 false
// boolean interrupted = Thread.interrupted();
if (Thread.currentThread().isInterrupted()) {
System.out.println("线程被中断");
break;
}
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
System.out.println("线程结束");
}
});
monitor.start();
}
public void stop() {
monitor.interrupt();
}
}



