介绍以下多线程模式,这里主要是列举Java有哪些线程模式以及其主要的使用方式。详情可阅读《Java多线程模式》一书。
1、Single Thread Execution——能通过这座桥的,只有一个人
该模式用锁来保护关键的执行区域。
2,Immutable ——不可破坏的
Immutable类是指实例化之后状态不再改变的类。
该模式可以在以下情况下考虑使用:确认类的实例状态不会发生变化;实例需要共享,且访问频繁。
3,Guarded Suspension——先等我准备好
该模式的主要特征是:正在wait的线程,期望当警戒条件成立的时候收到notify/notifyAll。
4,Balking——不需要的话就算了吧
该模式的主要特征是“不等待”。当警戒条件不成立的时候,就直接退出,马上进入下一个工作。
5,Producer-Consumer——我来做,你来用
生产者与消费者模式是多线程最经典的模式。生产者线程和消费者线程之间合作要想“放在中间的东西”,同步则要想“应该保护的东西”。
6,Read-Write Lock——想看就看,但看的时候不能写
该模式适合读任务繁重的时候。
7,Thread-Per-Message—这个工作交给你了
对于耗时操作,交给新线程。
8,Worker Thread ——等到工作来,来了就工作
该模式与Thread-Per-Message模式的区别:启动线程比较花时间,但需要频繁的创建新线程去完成工作的时候,不如重复使用一个线程,保证资源的再利用。这个线程就是Worker Thread。
另外,该模式的一个主题是服务量(承载量)-既Worker Thread与Request的数量之间的平衡。
9,Future ——先给您提货单
该模式使用场景是,如果获取某个值是一个耗时操作,则可以分离“准备返回值”和“使用返回值”。先给一个“准备返回值”,后续再获取“使用返回值”。
10,Two-Phase Termination——收拾好玩具去睡觉
线程的两步终止法,在博客http://blog.csdn.net/luoxinwu123/article/details/7660625中有详细介绍。
11,,Thread-Specialfic Storage——每个线程的保管箱
该模式是使用Thread_Local Storage(TLS)来保管线程的一些状态。
12,Active Object——接受异步消息的主动对象
主动对象一般指自己拥有独立的线程,其特征是:(1)异步接受外部传来的请求;(2)可自由调度;(3)实际的处理由单线程运行;(4)可返回执行结果;(5)拥有独立线程。
该模式组成元素很多,适合处理大规模的问题。