并发
文章平均质量分 65
colspanprince
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《12个真实项目实战带你玩转Java并发编程》 笔记三 ThreadPoolExecutor与生产者消费者模式
一、第十三、十四课 两阶段终止模式 既要保证线程灵活的切换运行状态,又要保证线程优雅的处理完当前任务,就是两阶段终止模式的核心思想 两个阶段总结起来分别为: 发出信号,告知正在运行的线程将被终止(通过volatile定义的bool变量实现) 接收到此信号的线程,做完善后工作,停止运行(比如把未处理完的数据写入持久化缓存,等待下次处理) 二、第十五课 ThreadPoolExecutor的shutdown和shutdownNow 两者都会尝试中止线程,但都只能中止阻塞状态的线程,正在运行的线程无法中原创 2021-12-27 14:25:42 · 454 阅读 · 0 评论 -
《12个真实项目实战带你玩转Java并发编程》 笔记五 ThreadLocal
一、ThreadLocal解密 如果让我们自己实现ThreadLocal功能,我们第一反应想到的应该是这么做 新建一个类名为MyThreadLocal 在类种创建一个Map类型的成员变量,key是Thread,value是Object 但这样会有一个很严重的问题,内存泄漏。只要这个MyThreadLocal对象不回收,那Map中的对象也不会被回收,除非每次手动删除,但这样太麻烦了,一不注意就会导致OOM。所以这样设计是有很严重的缺陷的,那JDK中的ThreadLocal是如何是实现的呢? 通过观察.原创 2021-12-23 17:21:10 · 698 阅读 · 0 评论 -
《12个真实项目实战带你玩转Java并发编程》 笔记四 FutureTask
一、第十六课Promise模式 以烧水、泡茶这个过程举例,烧水耗时3分钟,泡茶耗时1分钟。用代码实现该功能,有下图所示的三种方式 1)单线程模式,先烧水再泡茶,那么会耗时4分钟,即上图中第一行 2)多线程模式,即最基础的Thread线程,烧水是一个线程,泡茶是一个线程,2个线程同时start,但这样的话主线程会很快结束,无法统计总共耗时,即上图中第二行 3)使用FutureTask,烧水是一个FutureTask,喝茶是一个FutureTask,总共耗时3分钟,并且全部执行完后主线程才会结束..原创 2021-12-23 14:17:42 · 324 阅读 · 0 评论 -
《12个真实项目实战带你玩转Java并发编程》 笔记二 等待-通知机制
一、第九、十课 实现智能安防报警功能 这2课主要介绍了通过Lock、Condition的await、singal方法来实现的“等待-通知”机制,具体要看文章中的代码。多线程编程之保护性暂挂模式_爱宝贝丶的博客-优快云博客这篇博客和文章中的设计思路基本一样 二、第十一课Guarded Suspension模式在BlockingQueue源码中的应用场景 主要介绍了ArrayBlockingQueue的阻塞式的put和take方法。当队列满了后,put方法会触发notFull.await阻塞,直到...原创 2021-12-06 18:17:12 · 412 阅读 · 0 评论 -
《12个真实项目实战带你玩转Java并发编程》 笔记一 不可变类
一、第二课 解决并发问题的方法有哪些 不可变对象:类似String CAS原子类:如Atomic为前缀的一系列类 二、第三课 如何快速实现一个不可变类 1、使用final关键字修饰所有成员变量,避免其被修改,也可以保证多线程环境下被final关键字修饰的变量所引用的对象的初始化安全,即final修饰的字段在其他线程可见时,必定是初始化完成的。 2、使用private修饰所有成员变量,可以防止子类及其他地方通过引用直接修改变量值。 3、禁止提供修改内部状态的公开接口(比如我们前面例子中...原创 2021-11-30 10:10:38 · 570 阅读 · 0 评论
分享