
Java并发
zhangpeterx
这个作者很懒,什么都没留下…
展开
-
Java并发学习三:银行转账的死锁问题解决及示例
Java并发学习系列文章:Java并发学习-博客专栏今天在学习极客时间专栏:《Java并发编程实战》从03 | 互斥锁(上):解决原子性问题到06 | 用“等待-通知”机制优化循环等待。课程主要用银行转账作为解决死锁的例子。在转账过程中需要2把锁,一个锁锁住转出账户的余额,一把锁锁住转入账户的余额。但加锁的先后顺序会使程序产生死锁。有以下这四个条件都发生时才会出现死锁:1.互斥,共...原创 2019-12-02 13:53:56 · 2522 阅读 · 1 评论 -
Java并发学习二:编译优化带来的有序性问题导致的并发Bug
今天在学习极客时间专栏:《Java并发编程实战》第一讲01 | 可见性、原子性和有序性问题:并发编程Bug的源头中提到:编译器及解释器的优化可能导致意想不到的 Bug双重检验创建单例代码如下:public class Singleton { static Singleton instance; static Singleton getInstance(){ if (in...原创 2019-11-30 10:57:51 · 466 阅读 · 0 评论 -
Java并发学习一:CPU缓存导致的可见性问题带来的并发Bug
今天在学习极客时间专栏:Java并发编程实战第一讲01 | 可见性、原子性和有序性问题:并发编程Bug的源头中提到了:多核时代,每颗 CPU 都有自己的缓存,这时 CPU 缓存与内存的数据一致性就没那么容易解决了,当多个线程在不同的 CPU 上执行时,这些线程操作的是不同的 CPU 缓存。示例代码如下:public class App { private static int ...原创 2019-11-30 10:35:43 · 627 阅读 · 1 评论