java多线程设计模式
zwxu_
梦想还是要有了,万一。。。。。
展开
-
第9章 Future
背景介绍:假设有一个执行起来需要花时间的方法,我们就不需要等待执行结果出来了,而获取一张替代的提货单,这个提货单就Future参与者 public class FutureMain { public static void main(String[] args) { System.out.println("main BEGIN"); Host host =原创 2016-12-29 17:01:28 · 370 阅读 · 0 评论 -
第六章 Read-Write Lock(适合读取比写入次数频繁的时候)
背景介绍:将读取与写入分开来处理,在读取数据之前,必须获取用来读取的锁定。而要写入的时候,则必须获取用来写入的锁定。 Example:在生产-消费基础上,加入ReadWriteLock, lock.readLock() -> lock.writeLock()原创 2016-12-28 17:03:20 · 407 阅读 · 0 评论 -
第五章 Producer-Consumer(操作系统的生产者消费者模式) 6-3 至 6-7
背景介绍:在生产者和消费者之间加入一个"桥梁参与者",通过它缓解多个生产者线程和消费者线程之间处理速度差。 Example:厨师把东西放在桌子上,顾客从桌子上取东西吃,其中桌子就是这个桥梁参与者,如何往桌子放东西,可以通过Guarded Suspension, 采用队列、堆栈、优先队列等处理方式原创 2016-12-28 16:55:27 · 684 阅读 · 0 评论 -
第四章 Balking
背景介绍:当现在不适合进行这个操作,或是没有必要进行这个操作时,就直接放弃进行这个操作。(此时也需要Guarded条件,但不需要wait/notify)原创 2016-12-27 17:15:50 · 309 阅读 · 0 评论 -
第三章 Guarded Suspension
背景介绍:当现在不适合马上执行某个操作,就要求想要执行该操作的线程等待,此时不会浪费虚拟机时间。(wait,notifyAll) 四种等待情况 1.guarded wait 线程使用wait等待,等待被notify唤醒 等待端: while(!ready) {wait()}; 唤醒端: ready=true; notify();[改线程得到对象锁,只要条件满足,才会通过wait释放锁]原创 2016-12-27 16:45:45 · 235 阅读 · 0 评论 -
第二章 Immutable
背景介绍:Immutable类能保证实例状态绝不会改变,如String,可以利用该类省去使用共享互斥机制所浪费的时间 public final class Person { private final String name; private final String address; public Person(String name, String addre原创 2016-12-21 20:52:36 · 222 阅读 · 0 评论 -
第一章 Single Threaded Execution
背景介绍:只允许一个线程执行 public class Gate { private int counter = 0; private String name = "Nobody"; private String address = "Nowhere"; public synchronized void pass(String name, String addre原创 2016-12-21 20:30:13 · 265 阅读 · 0 评论 -
第十一章 Thread-Specific Storage
背景介绍:类似与ThreadLocal,保存每个线程的内容、独有的数据、独有的字段、内存空间 public class Log { private static final ThreadLocal tsLogCollection = new ThreadLocal(); // 加入一个log public static void println(String s)原创 2017-01-14 13:21:40 · 320 阅读 · 0 评论 -
第十章 Two-Phase Termination
背景介绍:我们将线程进行平常的处理的状态称为作业中。当希望结束这个线程是,则送出终止请求。 接着这个线程,并不会马上结束,而会开始进行必要的刷新工作,这个状态为终止处理中。从作业中 改变成终止处理中是第一阶段。终止处理中时,不会进行平常操作。尽管线程还在进行,但进行的是 终止处理。直到终止处理结束后,才真正结束线程。终止处理中的操作结束,是第二阶段。 1.安全的结束(安全性) 2.一定会原创 2017-01-14 13:06:53 · 311 阅读 · 0 评论 -
第八章 Worker Thread
背景介绍:工人线程会依次抓一件工作来处理。当没有工作时,工人线程会停下来等待新的工作 Example:Channel类基于Producer-Consumer即队列,实现taskRequest,putRequest 中心思想:将启动方法和执行方法分开,其他模式也遵循该思想,Thread-Per-Message 和 Command, 即用Client Thread 启动Worker Thread原创 2016-12-29 16:17:40 · 325 阅读 · 0 评论 -
第七章 Thread-Per-Message
背景介绍:每一个消息一个线程,forexample :ThreadLocal from jdk1.2 java.lang.ThreadLocal public class Host { private final Helper helper = new Helper(); public void request(final int count, final c原创 2016-12-28 17:27:51 · 344 阅读 · 0 评论