为什么JDK 15要废弃偏向锁?
在JDK 1.7中,引入了偏向锁的概念来优化synchronized的性能,但是偏向锁,在JDK 15中已经被废弃了。 那么,为什么呢?(https://openjdk.org/jeps/374 ) JDK 15决定废弃偏向锁的主要原因是:...
在JDK 1.7中,引入了偏向锁的概念来优化synchronized的性能,但是偏向锁,在JDK 15中已经被废弃了。 那么,为什么呢?(https://openjdk.org/jeps/374 ) JDK 15决定废弃偏向锁的主要原因是:...
作为开发人员,我们每天都要开发大量的接口,其中包括了读接口和写接口,而对于写接口来说,除了要保证他的性能、可用性以外,还需要有一个重要的问题,那就是考虑如何保证接口的幂等性。 幂等性 什么是幂等性? 幂等(idempotent、idempo...
我们都知道, 当JVM判断对象不再存活的时候,便会在下一次GC时候将该对象回收掉,为堆腾出空间,而JVM判断对象存活的算法大家比较熟知的有两种,分别是引用计数法和可达性分析算法 引用计数法:给对象中添加一个引用计数器,每当有一个地方引用它,...
CAS大家都知道,这是一项乐观锁技术,是Compare And Swap的简称,顾名思义就是先比较再替换。 虽然他叫乐观锁,但是我们都知道它是不需要加锁的,在JDK1.5 中的JUC就是建立在CAS之上的。相对于synchronized这种...
关于原子性,很多人在多个地方都听说过,大家也都背的很熟悉。 在事务的ACID中,有原子性的概念,在并发编程的原子性、可见性、有序性中也有原子性的概念。 有人认为他们是一样的,甚至很多人在说原子性的时候也都是这么说的: 原子性是指事务是一个不...
最近,JDK 19发布了,推出了几个新的特性,其中有一个比较值得关注的那就是新增了虚拟线程。 很多人可能比较疑惑,到底什么是虚拟线程,和我们现在使用的平台线程有啥区别呢? 要说清楚JDK 19中的虚拟线程,我们要先来了解一下线程都是怎么实现...
对象加锁的入口在ObjectSynchronizer::enter(h_obj, lock, current); 这个方法中(https://github.com/openjdk/jdk/blob/9583e3657e43cc1c6f210...
不知道大家有没有遇到过类似的问题,应用在刚刚启动之后,前几次访问都会比较卡顿,RT都会比极高,在运行一段时间之后,就会顺畅很多了。 这背后的原因是什么呢? 今天给大家介绍一种可能的原因,也是一种经常被别人忽略的原因,也是我们线上环境遇到过很...
最近,有很多人再传说 SpringBoot要出3.0的版本了,并且宣布不再支持 Java 8,最低要求是 Java 17了。 其实,早在2021年9月份,关于 Spring Framework 6.0的消息出来的时候,Spring 官方就已...
在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个RPC接口的时候,我们一般会定义一个字段表示本次请求是否成功的。 关于这个”本次请求是否成功”的字段的定义,我见过很多不同的开发者,定义的方式都不同,尤其是在属性的...