多线程设计架构模式

观察者模式监控任务的生命周期

利用观察者模式的思想,定义特殊的线程类,final 修饰重写run 方法,在其中各个时刻加入通知方法的调用。

Sing Thread Execution 设计模式

同一时刻只能有一个线程访问共享资源。通过对共享资源加锁实现。

读写锁分离设计模式

在共享资源时,我们会通过加锁的方式进行同步操作防止数据不一致的情况发生。但是,如果某个时刻有多个线程进行资源的读取操作,虽然有竞争,但是这种竞争不会引起数据不一致的情况发生,这种情况也同步的话就有些耗费时间。所以对于全是读的操作,可以允许同时进行,其余读写或写写的情况加同步限制,这样对于读多写少的应用可以提升性能。

不可变对象设计模式

核心思想是在线程之间不共享资源状态,甚至将资源的状态设置为不可变。设计一个不可变的类共享资源需要具备不可破坏性,比如用final修饰,针对共享资源操作的方法是不允许被重写的。例如Java中的String对象。

Future 设计模式

对于有些任务需要执行比较长的时间,通常需要等待任务执行结束或者出错才能返回结果,在此期间调用者只能进行等待,对此,Future设计模式提供了一种凭据式的解决方案。简单理解就是当一个耗时长的任务开始执行后直接给你返回一个临时的结果凭据,后面你可以用这个凭据去获取执行结果,不用再一直等待。

Guarded Suspension 设计模式

确保挂起。当线程在访问某个对象时,发现条件不满足,就暂时挂起等待条件满足时再次访问。它是很多线程设计模式的基础,比如生产消费者模式,Thread Worker 设计模式、Balking设计模式等。它的关注点在于临界值的条件是否满足,当达到设置的临界值时相关线程则会被挂起。

线程上下文设计模式

上下文是贯穿整个系统或阶段生命周期的对象,其中包括了系统全局的一些信息,会随着被创建一直到系统运行结束。在有些时候单个线程执行的任务步骤会非常多,后一个步骤的输入有可能是前一个步骤的输出,在单个线程执行时,为了使功能单一,有时候我们会采用GoF职责链设计模式。

当方法参数比较多时,一直传递参数会是一种比较繁琐的设计,这样的可以采用线程的上下文设计来解决。采用Thread.currentThread()作为key,保存需要的参数,这样就保证了线程之间上下文的独立性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值