设计模式
编程界——周大神
这个作者很懒,什么都没留下…
展开
-
Java并发编程之同步模式
同步模式之顺序控制 1. 固定运行顺序 比如,必须先 2 后 1 打印 1.1 wait notify 版 1.2 Park Unpark 版 可以看到,实现上很麻烦: 首先,需要保证先 wait 再 notify,否则 wait 线程永远得不到唤醒。因此使用了『运行标记』来判断该不该 wait 第二,如果有些干扰线程错误地 notify 了 wait 线程,条件不满足时还要重新等待,使用了 while 循环来解决 此问题 最后,唤醒对象上的 wait 线程需要使用 notifyAll,因为『同步对象原创 2021-02-01 14:50:03 · 123 阅读 · 0 评论 -
Java并发编程之设计模式
异步编程之生产者消费者 1. 定义 要点 与前面的保护性暂停中的 GuardObject 不同,不需要产生结果和消费结果的线程一一对应 消息队列可以用来平衡生产和消费的线程资源 生产者仅负责产生结果数据,不关心数据该如何处理,而消费者专心处理结果数据 消息队列是有容量限制的,满时不会再加入数据,空时不会再消耗数据 JDK 中各种阻塞队列,采用的就是这种模式 2. 实现 应用 某次运行结果 ...原创 2021-01-27 16:42:01 · 98 阅读 · 0 评论 -
Java并发编程之设计模式
同步模式之保护性暂停 1. 定义 即 Guarded Suspension,用在一个线程等待另一个线程的执行结果 要点 有一个结果需要从一个线程传递到另一个线程,让他们关联同一个 GuardedObject 如果有结果不断从一个线程到另一个线程那么可以使用消息队列(见生产者/消费者) JDK 中,join 的实现、Future 的实现,采用的就是此模式 因为要等待另一方的结果,因此归类到同步模式 2. 实现 应用 一个线程等待另一个线程的执行结果 执行结果 3. 带超时版 GuardedObj原创 2021-01-27 14:17:23 · 126 阅读 · 0 评论 -
Java并发编程之两阶段终止模式
两阶段终止模式 在一个线程 T1 中如何“优雅”终止线程 T2?这里的【优雅】指的是给 T2 一个料理后事的机会。 1. 错误思路 使用线程对象的 stop() 方法停止线程 stop 方法会真正杀死线程,如果这时线程锁住了共享资源,那么当它被杀 死后就再也没有机会释放锁,其它线程将永远无法获取锁 使用 System.exit(int) 方法停止线程 目的仅是停止一个线程,但这种做法会让整个程序都停止 2. 两阶段终止模式 2.1利用 isInterrupted interrupt 可以原创 2021-01-19 11:45:15 · 302 阅读 · 0 评论