`
pan_java
  • 浏览: 287899 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

多线程设计模式--two-phase termination

阅读更多
two-phase termination 等待线程执行终止处理再结束线程

public class CountupThread extends Thread {
    // 计数器的值
    private long counter = 0;

    // 已经送出终止请求则为true
    private volatile boolean shutdownRequested = false;

    //  终止请求
    public void shutdownRequest() {
        shutdownRequested = true;
        interrupt();
    }

    // 判断终求请求是否已经送出
    public boolean isShutdownRequested() {
        return shutdownRequested;
    }

    //动作
    public final void run() {
        try {
            while (!shutdownRequested) {
                doWork();
            }
        } catch (InterruptedException e) {
        } finally {
            doShutdown();
        }
    }

    //  作业
    private void doWork() throws InterruptedException {
        counter++;
        System.out.println("doWork: counter = " + counter);
        Thread.sleep(500);
    }

    // 终止处理
    private void doShutdown() {
        System.out.println("doShutdown: counter = " + counter);
    }
}


测试类
public class Main {
	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");
	}
}
分享到:
评论

相关推荐

    java多线程设计模式详解(PDF及源码)

    Phase Termination——快把玩具收拾好,去睡觉吧 第11章 Thread-Specific Storage——每个线程的保管箱 第12章 Active Object——接受异步消息的主动对象 总结 多线程程序设计的模式语言 附录A 练习问题的解答 附录B...

    设计模式之-两阶段终止模式(Two-Phase Termination Patter)模式.docx

    两阶段终止模式(Two-Phase Termination Pattern)是一种在多线程编程中确保线程安全关闭的方法,由黄文海在其著作《Java多线程编程实战指南 设计模式》中提出,不属于传统的23种设计模式,而是扩展到36种设计模式之...

    java多线程设计模式 (PDF中文版, 附源码)

    目录: 漫谈UML Introduction 1 Java语言的线程 Introduction 2 多线程...总结 多线程程序设计的模式语言 附录A 练习问题的解答 附录B Java的内存模型 附录C Java线程的优先级 附录D 线程相关的主要API 附录E 参考文献

    设计模式.pdf_学习模式必备

    - **Two-phase Termination**:两阶段终止模式,确保所有线程都能优雅地终止。 - **Thread-Specific Storage**:线程局部存储模式,为每个线程提供独立的存储空间。 ### 总结 设计模式是程式设计中不可或缺的一...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第二阶段41讲、多线程设计模式内容回顾与总结.mp4 │ 高并发编程第二阶段42讲、ClassLoader课程大纲介绍.mp4 │ 高并发编程第二阶段43讲、类加载的过程以及类主动使用的六种情况详细介绍.mp4 │ 高...

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第二阶段41讲、多线程设计模式内容回顾与总结.mp4 │ 高并发编程第二阶段42讲、ClassLoader课程大纲介绍.mp4 │ 高并发编程第二阶段43讲、类加载的过程以及类主动使用的六种情况详细介绍.mp4 │ 高...

    16、常用并发设计模式精讲(1).pdf

    - **两阶段终止模式**(Two-phase Termination Pattern)是一种用于优雅终止线程的设计模式。该模式通过两个步骤来终止线程:第一步是发送终止请求;第二步是等待线程自行终止。 **步骤详解:** 1. **发送终止请求...

    36种最新设计模式整理

    34. **两阶段终止模式\(Two-phase Termination\)**:确保在多线程环境下,所有线程都能安全终止。 35. **线程局部存储模式\(Thread-Specific Storage\)**:为每个线程提供一个单独的数据存储区域,避免数据竞争。 ...

    设计模式笔记

    - **Two-phase Termination(两阶段终止模式)**:优雅地关闭一个服务,避免突然关闭导致数据丢失等问题。 - **Thread-Specific Storage(线程本地存储模式)**:每个线程都有自己的独立副本,可以避免线程间的竞争...

    良葛格DesignPattern学习笔记

    - **Two-phase Termination**(两阶段终止模式):允许一个进程安全地终止,即使它拥有多个子线程。 - **Read-Write Lock**(读写锁模式):允许多个读取线程同时访问资源,但只允许一个写入线程访问资源。 - **...

    JavaConcurrencyPattern:Java并发模式

    这些文章已扩充为一本书:《Java多线程编程实战指南(设计模式篇)》,由电子工业出版社出版,当当、亚马逊、京东、互动出版网、淘宝等各大书店有售。 【样章】 Active Object模式: Immutable Object模式: Two-...

    Pattens In Java.pdf

    - 当需要提高多线程环境下的性能时,因为不可变对象可以安全地在多个线程之间共享。 #### 1.4 标记接口(Marker Interface) **使用:** 标记接口是一种特殊的接口类型,它没有任何方法声明。它主要用于表示某种...

Global site tag (gtag.js) - Google Analytics