
并发编程
文章平均质量分 89
一笑杯莫停
HelloWorld
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java线程池的任务消息队列
并发编程 队列原创 2022-07-27 11:52:22 · 2492 阅读 · 0 评论 -
wait()和sleep()的区别理解
说实话,除了他们的执行都会让线程阻塞状态以外,我并不认为他们有什么可比性。 1.wait()、notify() 和 notifyAll()方法都是Object的方法,只能在临界区被执行。 2.wait()执行后锁标识会被释放,使用场景是一些不满足条件的线程抢到锁后,为了让条件满足后再来让它执行,就调用这个方法。然后等条件满足后,再调用notify() 和 notifyAll()让它活着它们苏醒...原创 2020-04-02 15:09:58 · 585 阅读 · 0 评论 -
死锁杂谈
以前我没说锁和被保护的资源是1:N的关系,这些被保护的资源有可能是彼此没关联的,也有可能彼此关联。 保护没有关联关系的多个资源 由于这些资源彼此没关系,我们可以把他们全都塞进this这把锁里一了百了,我们也可以给不同的资源加不同的锁分而治之。总的来说并行分而治之的性能肯定要比串行的同一把锁好的多。分而治之的这种锁也叫细粒度锁 保护有关联关系的多个资源 有关联的资源也可以像没关联的资源那样加...原创 2020-03-27 17:25:09 · 205 阅读 · 0 评论 -
学习笔记(3)——Java如何解决并发编程线程切换导致的原子性问题
上一篇笔记写了如何解决并发导致的三个问题其中两个:缓存导致的可见性问题和编译优化导致的顺序性问题,我们可以通过按需进行禁用缓存和编译优化来解决。指导我们如何按需禁用引出java内存模型的概念。那么这篇笔记的主要目的是讨论如何解决线程切换导致的原子性问题。 思考如何解决原子性问题: 原子性:一个或者多个操作在CPU上执行不被中断的特性 很显然,原子性问题是线程切换导致的,我们只要禁用线程切...原创 2020-03-27 13:57:39 · 568 阅读 · 0 评论 -
学习笔记(2)——Java如何解决并发编程的可见性和有序性问题
目录 Java内存模型 使用volatile关键字的疑惑 Happens-Before 规则 1.程序顺序性规则 2. volatile 变量规则 3. 传递性 4. 管程中锁的规则 5. 线程 start() 规则 6. 线程 join() 规则 7.final 上一篇,学到了Java并发编程的三大BUG来源,它们分别是: 缓存导致的可见性问题 线程切换导致的原子...原创 2020-01-08 11:29:19 · 189 阅读 · 0 评论 -
学习笔记(1)——并发编程BUG来源
目录 1.缓存导致的可见性问题 2.线程切换导致的原子性问题 3.编译优化带来的有序性问题 4.volatile 不管是什么语言,并发编程都是难点,知识点也比较零散。大神Doug Lea也没具体的发过什么相关论文。总之要啃这么难啃的饼,我们没有什么捷径可走,只有弄清楚原理,原因才能从根本上解决问题。 随着CPU,内存,I/O设备的不断更新换代,我们的计算机性能越来越强大。但是有个核心的...原创 2020-01-03 16:14:26 · 213 阅读 · 0 评论