Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

Java常用并发设计模式精讲 PDF 下载


分享到:
时间:2024-03-07 10:33来源:http://www.java1234.com 作者:转载  侵权举报
Java常用并发设计模式精讲
失效链接处理
Java常用并发设计模式精讲 PDF 下载
 
 
相关截图:
 
主要内容:

1. 优雅终止线程的设计模式
思考:在一个线程 T1 中如何优雅的终止线程 T2?
错误思路1:使用线程对象的 stop() 方法停止线程
stop 方法会真正杀死线程,如果这时线程锁住了共享资源,那么当它被杀死后就再也没有机会释
放锁, 其它线程将永远无法获取锁 。
错误思路2:使用 System.exit(int) 方法停止线程
目的仅是停止一个线程,但这种做法会让整个程序都停止
正确思路:两阶段终止模式
1.1 两阶段终止(Two-phase Termination)模式——优雅的终止线程两阶段终止(Two-phase Termination)模式是一种用于优雅终止线程的设计模式。该模式的基
本思想是通过两个阶段来终止线程,第一个阶段是发送终止请求,第二个阶段是等待线程终止。
思考:第一阶段,在Java中如何发送终止请求?
回顾一下Java线程的生命周期
Java 线程进入终止状态的前提是线程进入 RUNNABLE 状态,而实际上线程也可能处在休眠状
态,也就是说,我们要想终止一个线程,首先要把线程的状态从休眠状态转换到 RUNNABLE 状态。
利用java线程中断机制的interrupt() 方法,可以让线程从休眠状态转换到RUNNABLE 状态。
思考:第二阶段,线程转换到 RUNNABLE 状态之后,我们如何再将其终止呢?
RUNNABLE 状态转换到终止状态,优雅的方式是让 Java 线程自己执行完 run() 方法,所以一般
我们采用的方法是设置一个标志位,然后线程会在合适的时机检查这个标志位,如果发现符合终止条
件,则自动退出 run() 方法。
综合上面这两点,我们能总结出终止指令,其实包括两方面内容:interrupt() 方法和线程终止的
标志位。
两阶段终止模式可以带来多种好处,例如:
1. 优雅终止:两阶段终止模式可以优雅地终止线程,避免突然终止线程带来的副作用。
2. 安全性:两阶段终止模式可以在线程终止前执行必要的清理工作,以确保程序的安全性和稳定性。
3. 灵活性:两阶段终止模式可以根据具体情况灵活地设置终止条件和清理工作。
1.2 使用场景
两阶段终止模式适用于需要优雅终止线程的场景,例如:
1. 服务器应用程序:在服务器应用程序中,需要处理大量的请求和数据,并且需要在终止时正确地保存和释放资
源,以避免数据丢失和资源泄漏。
2. 大规模并发系统:在大规模并发系统中,线程数量可能非常多,并且需要在终止时正确地关闭和释放所有的线程
和资源。
3. 定时任务系统:在定时任务系统中,需要在任务执行完毕后正确地终止任务线程,并清理相关资源。
4. 数据处理系统:在数据处理系统中,需要在处理完所有数据后正确地终止线程,并清理相关资源。
5. 消息订阅系统:在消息订阅系统中,需要在订阅结束后正确地终止订阅线程,并清理相关资源。
总之,两阶段终止模式适用于需要优雅终止线程的各种场景,可以提高程序的可靠性和可维护性。在
应用该模式时,需要注意正确设计终止条件和清理工作,以避免出现线程安全问题和资源泄漏问题。
利用两阶段终止模式设计优雅终止监控操作
在多线程程序中,如果有一些线程需要执行长时间的监控或者轮询操作,可以使用两阶段终止模式来
终止这些线程的执行。使用两阶段终止模式可以保证监控线程在执行终止操作时能够安全地释放资源
和退出线程。同时,该模式还可以保证监控线程在终止前能够完成必要的清理工作,从而避免资源泄
露和其他问题。
 
 
 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐