Fork me on GitHub

08 2021 档案

摘要:当我们遇到死锁之后,除了可以手动重启程序解决之外,还可以考虑是使用顺序锁和轮询锁,这部分的内容可以参考我的上一篇文章,这里就不再赘述了。然而,轮询锁在使用的过程中,如果使用不当会带来新的严重问题,所以本篇我们就来了解一下这些问题,以及相应的解决方案。 问题演示 当我们没有使用轮询锁之前,可能会出现这 阅读全文
posted @ 2021-08-31 09:00 磊哥|www.javacn.site 阅读(424) 评论(0) 推荐(3) 编辑
摘要:死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方停止执行,以取得系统资源,但是没有一方提前退出,就称为死锁。 死锁示例代码如下: public class DeadLockExample { public static void main(String[] 阅读全文
posted @ 2021-08-28 09:55 磊哥|www.javacn.site 阅读(875) 评论(0) 推荐(0) 编辑
摘要:死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方停止执行,以取得系统资源,但是没有一方提前退出,就称为死锁。 死锁示例 接下来,我们先来演示一下 Java 中最简单的死锁,我们创建两个锁和两个线程,让线程 1 先拥有锁 A,然后在 1s 后尝试获取锁 B,同 阅读全文
posted @ 2021-08-24 08:47 磊哥|www.javacn.site 阅读(1371) 评论(2) 推荐(0) 编辑
摘要:在 Java 中 synchronized 和 ReentrantLock 默认使用的都是非公平锁,而它们采用非公平锁的原因都是一致的,都是为了提升程序的性能。那为什么非公平锁就能提升性能呢?接下来我们一起来看。 非公平锁 非公平锁:每个线程获取锁的顺序是随机的,并不会遵循先来先得的规则,任何线程在 阅读全文
posted @ 2021-08-20 09:28 磊哥|www.javacn.site 阅读(281) 评论(0) 推荐(0) 编辑
摘要:JDK 1.5 之前 synchronized 的性能是比较低的,但在 JDK 1.5 中,官方推出一个重量级功能 Lock,一举改变了 Java 中锁的格局。JDK 1.5 之前当我们谈到锁时,只能使用内置锁 synchronized,但如今我们锁的实现又多了一种显式锁 Lock。 前面的文章我们 阅读全文
posted @ 2021-08-13 21:38 磊哥|www.javacn.site 阅读(1479) 评论(0) 推荐(1) 编辑
摘要:synchronized 在 JDK 1.5 时性能是比较低的,然而在后续的版本中经过各种优化迭代,它的性能也得到了前所未有的提升,上一篇中我们谈到了锁膨胀对 synchronized 性能的提升,然而它也只是“众多” synchronized 性能优化方案中的一种,那么我们本文就来盘点一下 syn 阅读全文
posted @ 2021-08-09 22:54 磊哥|www.javacn.site 阅读(1504) 评论(0) 推荐(1) 编辑
摘要:synchronized 在 JDK 1.5 之前性能是比较低的,在那时我们通常会选择使用 Lock 来替代 synchronized。然而这个情况在 JDK 1.6 时就发生了改变,JDK 1.6 中对 synchronized 进行了各种优化,性能也得到了大幅的提升,这也是目前版本中还能经常见到 阅读全文
posted @ 2021-08-03 09:15 磊哥|www.javacn.site 阅读(745) 评论(1) 推荐(2) 编辑
摘要:synchronized 是 Java 语言中处理并发问题的一种常用手段,它也被我们亲切的称之为“Java 内置锁”,由此可见其地位之高。然而 synchronized 却有着多种用法,当它修饰不同对象时,其意义也是不同的,下面我们一起来看。 ​ synchronized 用法 synchroniz 阅读全文
posted @ 2021-08-02 13:18 磊哥|www.javacn.site 阅读(851) 评论(1) 推荐(3) 编辑

点击右上角即可分享
微信分享提示