Java中的两阶段终止模式

94 阅读1分钟

1.两阶段终止模式的用途

两阶段终止模式主要用于可以在停止一个一直持续进行某个动作的线程的同时完成一些善后工作,以避免这个线程的突然终止对其他线程资源产生影响

2.两阶段终止模式的代码实现

class TwoStageMode{
    private Thread moniter;

    public void start(){
        moniter = new Thread(){
            @Override
            public void run() {
                while(true){
                    if(Thread.currentThread().isInterrupted()){
                        System.out.println("执行被打断后的操作");
                        break;
                    }
                    try {
                        Thread.sleep(2 * 1000);
                        System.out.println("执行监控过程~~~");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                        Thread.currentThread().interrupt();
                    }
                }
            }
        };
        moniter.start();
    }
    
    
    public void stop(){
        moniter.interrupt();
    }


}

3.两阶段终止模式代码解读

假设在主线程中启动了一个工作线程用于某项功能的监控,这个监控动作体现在第5行到第22行,由于这个监控事件不能一直进行,需要进行一定的休眠。当需要在休眠状态下终止的时候,线程的打断标记会被重置为false,因此在catch代码块内,需要手动设置打断标记。当下一次检测打断标记的时候,就会发现这个工作线程应该停止了,进入第9行到第12行代码执行善后工作。