多线程
mylike_java
非宁静不能至远
展开
-
聊聊并发编程-java内存模型
上一节中讲了可见性,原子性和有序性问题产生的源头。这一节我们就来讲讲如何解决可见性,有序性问题。 通过上节我们知道可见性是由于CPU缓存引起的,有序性是由于编译器重排优化引起的。 那么解决可见性和有序性最简单的方案就是禁用CPU缓存和禁止指令重排。但是如果我们直接粗暴的禁止也就享受不了CPU缓存和指令重排带来的性能优化的成果了。最好的办法是能够提供禁止使用CPU缓存和指令重排的方法,由我...原创 2019-12-13 16:12:22 · 107 阅读 · 0 评论 -
聊聊并发编程-可见性,原子性和有序性
并发是提升性能的利器,同时也是最容易出bug的。编写正确的并发程序是一件比较困难的事情。并发程序的bug往往会很诡异,同时又难以重现,调试,让人抓狂。但如果我们能理解并发的本质,抽丝剥茧,并能快速,精准的找出产生问题的源头。接下来我们就来分析一下并发问题产生的源头。 大家都知道CPU,内存,IO设备这三者的速度相差悬殊。我们的程序会有访问内存,IO。根据木桶原理程序的性能取决于...原创 2019-11-25 14:43:51 · 197 阅读 · 0 评论