zoukankan      html  css  js  c++  java
  • Two-phase Termination 把玩具收拾好再去睡觉。

    字面翻译是“两阶段终止”,这个模式用来进行结束操作后,再终止线程。比如我们想停止一个线程,但是让他停止之前必须要做一些清理工作,这时候就需要用到two-phase termination模式。

    public class TwoPhaseTerminationTest {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            System.out.println("main begin");
    
            try {
                CountupThread t = new CountupThread();
                t.start();
    
                Thread.sleep(10000);
    
                System.out.println("main: shutdownRequest");
                t.shutdownRequest();
    
                System.out.println("main: join");
                t.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
            System.out.println("main end");
        }
    }
    
    class CountupThread extends Thread {
    
        private long counter = 0;
        private volatile boolean shutdownReuqest = false;
    
        public void shutdownRequest() {
            this.shutdownReuqest = true;
            interrupt();
        }
    
        public boolean isShutdownRequested() {
            return shutdownReuqest;
        }
    
        @Override
        public void run() {
            try {
                while (!shutdownReuqest) {
                    doWork();
                }
            } catch (InterruptedException e) {
    
            } finally {
                doShutdown();
            }
        }
    
        private void doShutdown() {
            System.out.println("doShutdown: count=" + counter);
        }
    
        private void doWork() throws InterruptedException {
            counter++;
            System.out.println("doWork: count=" + counter);
            Thread.sleep(500);
        }
    }
  • 相关阅读:
    读取组合单元格
    Spire.XLS:一款Excel处理神器
    linq
    LINQ语句中的.AsEnumerable() 和 .AsQueryable()的区别
    合并单元格
    web sec / ssd / sshd
    linux——cat之查看cpu信息、显示终端、校验内存.............
    MATLAB mcr lib的环境变量书写
    Linux查看库依赖方法
    判断当前所使用python的版本和来源
  • 原文地址:https://www.cnblogs.com/gaotianle/p/3308344.html
Copyright © 2011-2022 走看看