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");
}
}
分享到:
相关推荐
Phase Termination——快把玩具收拾好,去睡觉吧 第11章 Thread-Specific Storage——每个线程的保管箱 第12章 Active Object——接受异步消息的主动对象 总结 多线程程序设计的模式语言 附录A 练习问题的解答 附录B...
两阶段终止模式(Two-Phase Termination Pattern)是一种在多线程编程中确保线程安全关闭的方法,由黄文海在其著作《Java多线程编程实战指南 设计模式》中提出,不属于传统的23种设计模式,而是扩展到36种设计模式之...
目录: 漫谈UML Introduction 1 Java语言的线程 Introduction 2 多线程...总结 多线程程序设计的模式语言 附录A 练习问题的解答 附录B Java的内存模型 附录C Java线程的优先级 附录D 线程相关的主要API 附录E 参考文献
- **Two-phase Termination**:两阶段终止模式,确保所有线程都能优雅地终止。 - **Thread-Specific Storage**:线程局部存储模式,为每个线程提供独立的存储空间。 ### 总结 设计模式是程式设计中不可或缺的一...
│ 高并发编程第二阶段41讲、多线程设计模式内容回顾与总结.mp4 │ 高并发编程第二阶段42讲、ClassLoader课程大纲介绍.mp4 │ 高并发编程第二阶段43讲、类加载的过程以及类主动使用的六种情况详细介绍.mp4 │ 高...
│ 高并发编程第二阶段41讲、多线程设计模式内容回顾与总结.mp4 │ 高并发编程第二阶段42讲、ClassLoader课程大纲介绍.mp4 │ 高并发编程第二阶段43讲、类加载的过程以及类主动使用的六种情况详细介绍.mp4 │ 高...
- **两阶段终止模式**(Two-phase Termination Pattern)是一种用于优雅终止线程的设计模式。该模式通过两个步骤来终止线程:第一步是发送终止请求;第二步是等待线程自行终止。 **步骤详解:** 1. **发送终止请求...
34. **两阶段终止模式\(Two-phase Termination\)**:确保在多线程环境下,所有线程都能安全终止。 35. **线程局部存储模式\(Thread-Specific Storage\)**:为每个线程提供一个单独的数据存储区域,避免数据竞争。 ...
- **Two-phase Termination(两阶段终止模式)**:优雅地关闭一个服务,避免突然关闭导致数据丢失等问题。 - **Thread-Specific Storage(线程本地存储模式)**:每个线程都有自己的独立副本,可以避免线程间的竞争...
- **Two-phase Termination**(两阶段终止模式):允许一个进程安全地终止,即使它拥有多个子线程。 - **Read-Write Lock**(读写锁模式):允许多个读取线程同时访问资源,但只允许一个写入线程访问资源。 - **...
这些文章已扩充为一本书:《Java多线程编程实战指南(设计模式篇)》,由电子工业出版社出版,当当、亚马逊、京东、互动出版网、淘宝等各大书店有售。 【样章】 Active Object模式: Immutable Object模式: Two-...
- 当需要提高多线程环境下的性能时,因为不可变对象可以安全地在多个线程之间共享。 #### 1.4 标记接口(Marker Interface) **使用:** 标记接口是一种特殊的接口类型,它没有任何方法声明。它主要用于表示某种...