
java 多线程设计模式
文章平均质量分 84
澹泊csdn
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
主仆模式(Master-Slave)
十、主仆模式(Master-Slave) 1、核心思想 一个基于分而治之思想设计模式,将一个任务(原始任务)分解为若干个语义等同的子任务, 并由专门的工作者线程来并行执行这些任务,原始任务的结果是通过整合各个子任务的处理结果形成的。 2、评价: 即提高计算效率,又实现了信息隐藏。 3、适用场景 a、并行计算,目的是提升计算性能。 b、容翻译 2017-02-23 11:51:09 · 25618 阅读 · 0 评论 -
java多线程设计模式 -- 流水线模式(Pipeline)
十一、流水线模式(Pipeline) 1、核心思想 将一个任务处理分解为若干个处理阶段,其中每个处理阶段的输出作为下一个处理阶段的输入,并且各个处理阶段都有相应的工作者线程去执行相应的计算。 2、评价: 充分利用CPU,提高其计算效率。 允许子任务间存在依赖关系的条件下实现并行计算。 非常便于采用单线程模型实现对子任务的处理。 有错误处理 Pip翻译 2017-02-24 17:29:43 · 12184 阅读 · 5 评论 -
immutable Object 不可变对象设计模式
二、不可变对象设计模式(immutable Object)1、一个严格意义上的不可变对象a、类本身使用final修饰:防止其子类改变其定义行为。b、所有字段都用final修饰c、在对象的创建过程中,this关键字没有泄露给其他类:防止其他类(包括内部匿名类)在对象创建过程中修改其状态。d、任何字段,若引用了其他状态可变的对象(如集合、数组、对象等),则这些字段必须是privat翻译 2017-02-09 15:20:47 · 637 阅读 · 0 评论 -
两阶段终止模式(Two-phase Termination)
1、核心思想将停止线程这个动作分解为准备阶段和执行阶段,提供了一种通用的用于优雅地停止线程的方法2、支持多个可停止线程需要共用一个线程停止标志场景,如多个线程实例使用一个队列中的数据。此时notifyThreadTermination发挥作用。3、可复用代码Terminatable、AbstractTerminatableThread、TerminationToken4、参考网站翻译 2017-02-14 15:20:25 · 1649 阅读 · 0 评论 -
承诺模式(promise)
承诺模式翻译 2017-02-15 10:34:09 · 1079 阅读 · 0 评论 -
生产者消费者模式(Producer-Consumer)
六、生产者消费者模式(Producer-Consumer) 1、核心思想 通过管道对数据的生产者和消费者进行解耦,使二者不直接交互,从而使二者的处理速率相对来说互不影响。 2、注意通道积压 a、使用阻塞队列。 b、使用带流量控制的无界阻塞队列。 3、可复用代码 无 4、参考网站 Semaphore信号量控制 学习地址:http://www.翻译 2017-02-16 09:03:21 · 1695 阅读 · 0 评论 -
生产者消费者模式之工作窃取算法
生产者消费者模式之工作窃取算法 1、一个通道只有一个队列,多个消费者共享一个队列实例,导致锁的竞争,如果一个通道拥有对个队列,则消费者可以从通道中获取各自队列获取数据。 2、如要服务有高性能和可靠性的要求,Consumer-Producer模式请使用 kafka等开源工具public interface WorkStealingEnableChannel<P> extends Chanel<P>翻译 2017-02-16 09:14:34 · 2099 阅读 · 1 评论 -
主动对象模式(Active Object)
七、主动对象模式(Active Object) 1、核心思想 一种异步编程思想,允许任务的提交(相当于对异步方法的调用)和任务的执行(相当于异步方法的真正执行)分离,实现了异步编程。 有利于提高并发性,从而提高系统的吞吐率 2、适用场景 适合分解一个比较耗时的任务(如I/O任务)已减少主线程的等待时间。 3、可复用代码 ActiveObjectProxy翻译 2017-02-21 15:15:57 · 1717 阅读 · 0 评论 -
线程池模式(Thread Pool)
七、线程池模式(Thread Pool) 1、核心思想 使用队列对待处理的任务进行缓存,并复用一定数量的工作者线程去取队列中的任务进行执行。 本质是使用极有限的资源去处理相对无限的任务 2、线程是有限的资源。不仅在执行任务时消耗CPU和内存等资源,线程对象本身以及线程所需的调用栈也占内存,并且java创建一个线程意味着JVM会创建相应的依赖宿主机操作系统的本地线程 3、评价翻译 2017-02-21 17:36:48 · 833 阅读 · 0 评论 -
线程特有存储模式(Thread Specific Storage)
八、线程特有存储模式(Thread Specific Storage) 1、核心思想 通过不共享变量实现了线程安全,避免了与锁的消耗及相关的问题。每个线程都有且只持有一个变量实例 2、适用场景 a、需要使用非线程安全对象,但又不希望引入锁。 b、使用线程安全对象,但希望避免其使用的锁的开销和相关问题。 c、隐式参数传递:他是线程全局可见的 d、特翻译 2017-02-21 18:42:06 · 773 阅读 · 0 评论 -
串行线程封闭(Serial Thread Confinement)
九、串行线程封闭(Serial Thread Confinement) 1、核心思想 通过将多个并发的任务存入队列实现任务的串行化,并为这些串行化的任务创建唯一的一个工作线程进行处理。 本质:使用一个开销更小的锁(队列锁)去替代另一个可能开销更大的锁(非线程安全对象引用的锁) 2、适用场景 a、需要使用非线程安全对象,但又不希望引入锁。 b、任务的执行涉及翻译 2017-02-22 11:47:43 · 2167 阅读 · 2 评论 -
保护性暂挂模式(Guarded Suspension)
1、核心思想如果某个线程执行特定的操作前需要满足一定的条件,则在该条件未满足时将线程暂停运行(即暂挂线程,使其处于等待(waiting)状态,直到该条件满足时才继续运行)2、评价与实现考量a、GuardedAction call方法采用闭包方式,会增加JVM垃圾回收的负担。b、可能增加上下文切换,过多则会消耗系统的CPU,从而降低系统处理能力。c、内存可见性和锁泄露, 可改变的翻译 2017-02-13 10:04:20 · 1556 阅读 · 0 评论