多线程设计模式综述

    由于多核CPU已经成了每台电脑的标配,计算机性能大大提高,随之带来的是程序员对多核的高效利用,也就是多并发编程。显然,多并发编程大大提高了系统的吞吐率,使得高并发不再遥不可及。但与此同时,也带来了很多令人头疼的问题。为了解决多线程编程带来的问题(如线程安全问题、死锁问题、内存溢出等),通过一些多线程设计模式可以巧妙的避开或者解决这些问题。我们可以在大量的分布式中间件(比如RocketMQ)中见到这一类的设计模式,对多线程设计模式的了解也能帮助更快更好地理解分布式中间件的设计思路。

下列整理了多线程设计模式带来的好处以及所使用的相关设计模式:

1. 不使用锁的情况下保证线程安全:Immutable Object(不可变对象模式)、Thread Specific Storage(线程特有存储模式)、Serial Thread Confinement(串行线程封闭模式)
2. 优雅地停止线程:Two-phase Termination(两阶段终止模式)
3. 线程协作:Guarded Suspension(保护性暂挂模式)、Producer-Consumer(生产者-消费者模式)
4. 提高并发性、减少等待:Promise(承诺模式)、Active Object(主动对象模式)、Pipeline(流水线模式)
5. 提高响应性:Master-Slave(主仆模式)、Half-sync/Half-async(半同步/半异步模式)
6. 减少资源消耗:Thread Pool(线程池模式)、Serial Thread Confinement(串行线程封闭模式)

为了更直观的鸟瞰多线程设计模式,整理了设计模式的思维脑图供参考,后面会有更加详细的文章配合一些开源项目,介绍说明各个多线程模式的实践。

多线程设计模式概览

参考资料:

黄文海  Java多线程编程实战指南 设计模式篇

猜你喜欢

转载自blog.csdn.net/u010145219/article/details/90859785