摘要: 本文来源于公众号【胖滚猪学编程】 转载请注明出处! 在 "互斥锁ReentrantLock不好用?试试读写锁ReadWriteLock" 一文中,我们对比了互斥锁ReentrantLock和读写锁ReadWriteLock的区别,说明了读写锁在读多写少的场景下具有明显的性能优势,但是人的欲望是无穷的 阅读全文
posted @ 2020-05-17 15:36 胖滚猪学编程 阅读(671) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock完美实现了互斥,完美解决了并发问题。但是却意外发现它对于读多写少的场景效率实在不行。此时ReentrantReadWriteLock来救场了!一种适用于读多写少场景的锁,可以大幅度提升并发效率,你必须会哦! 序幕 为何引入读写锁? ReentrantReadWriteLoc 阅读全文
posted @ 2020-05-15 22:55 胖滚猪学编程 阅读(505) 评论(0) 推荐(2) 编辑
摘要: 在如何解决原子性问题的最后,我们卖了个关子,互斥锁不仅仅只有synchronized关键字,还可以用什么来实现呢? J.U.C包中还提供了一个叫做Locks的包,我好歹英语过了四级,听名字我就能马上大声的说:Locks包必然也可以用作互斥! ReentrantLock 我们可以通过从具体到抽象的方法 阅读全文
posted @ 2020-05-12 22:12 胖滚猪学编程 阅读(481) 评论(0) 推荐(1) 编辑
摘要: 原创声明:本文转载自公众号【胖滚猪学编程】,转载务必注明出处! 在 "并发编程BUG源头" 文章中,我们初识了并发编程的三个bug源头:可见性、原子性、有序性。在 "如何解决可见性和原子性" 文章中我们大致了解了可见性和有序性的解决思路,今天轮到最后一个大bug,那就是原子性。 知识回顾 锁模型 J 阅读全文
posted @ 2020-05-11 22:43 胖滚猪学编程 阅读(487) 评论(0) 推荐(1) 编辑
摘要: 原创声明:本文来源于公众号【胖滚猪学编程】,转载请注明出处。 上一节 "【漫画】JAVA并发编程三大Bug源头(可见性、原子性、有序性)" 我们聊了聊并发编程的三个bug源头,这还没开始进入并发世界,胖滚猪就遇到了难题。。 这个难题是所有初学者都会有的疑惑:没法复现那些理论知识告诉我们的bug。但是 阅读全文
posted @ 2020-05-10 09:16 胖滚猪学编程 阅读(649) 评论(0) 推荐(0) 编辑
摘要: 原创声明:本文转载自公众号【胖滚猪学编程】​ 某日,胖滚猪写的代码导致了一个生产bug,奋战到凌晨三点依旧没有解决问题。胖滚熊一看,只用了一个volatile就解决了。并告知胖滚猪,这是并发编程导致的坑。这让胖滚猪坚定了要学好并发编程的决心。。于是,开始了我们并发编程的第一课。 序幕 BUG源头之一 阅读全文
posted @ 2020-05-07 21:27 胖滚猪学编程 阅读(901) 评论(0) 推荐(3) 编辑