IT袋

当前位置:主页 > 经验教程 > 建站编程 >

java面试题

java面试题:为什么JDK 15要废弃偏向锁?(2)

时间:2023-11-02 18:49:39 来源:IT袋 作者:马勇
导读:java面试题,回到最开始的问题: 为什么JDK 15要废弃偏向锁? 取消偏向锁状态的原因是, 偏向锁状态在现代的应用场景下已经不再有明显的性能优势,反而会增加虚拟

java面试题

回到最开始的问题:为什么JDK 15要废弃偏向锁?

取消偏向锁状态的原因是,偏向锁状态在现代的应用场景下已经不再有明显的性能优势,反而会增加虚拟机的复杂度和维护成本。

具体的原因是:

1. 偏向锁状态是一种优化技术,用于减少无竞争情况下的同步开销。

它假设一个对象只会被一个线程使用,所以当第一个线程使用对象时,就会把自己的标记放在对象上,表示这个对象属于自己。

这样,下次这个线程再使用对象时,就不用检查了,直接就可以用。

但是如果有别的线程也想用这个对象,就要先把标记去掉,然后再竞争。

2. 偏向锁状态在过去能够带来很大的性能提升,是因为有些应用会使用很多不必要的同步操作。

比如早期的Java集合类(如Hashtable和Vector),它们每次访问都要同步。

现在的应用一般会使用非同步的集合类(如HashMap和ArrayList)或者更高效的并发数据结构(如ConcurrentHashMap、CopyOnWriteArrayList等)来处理单线程或多线程的情况。

这意味着如果更新代码使用这些新的类,就可以获得更好的性能,而不需要依赖偏向锁状态。

java面试题

3. 偏向锁状态也有一个缺点,就是当有竞争发生时,需要进行一次代价很高的撤销操作。

所以只有当应用有大量的无竞争的同步操作时,偏向锁状态才有优势。

但是随着硬件和软件的发展,原子操作的代价已经降低了很多,而且现在的应用往往使用线程池和工作队列来处理并发任务,这些场景下偏向锁状态反而会降低性能。

4. 偏向锁状态还给虚拟机带来了很多复杂度和维护难度,只有少数几个最有经验的工程师能够理解和修改它。它也影响了一些新特性的设计和实现。

综上所述,偏向锁状态已经不再适合现代的Java应用,所以在Java 15 之后被废弃。

上述就是java面试题、为什么JDK、15要废弃偏向锁的具体介绍,希望大家能喜欢!

相关阅读

  • 二级域名怎么注册 二级域名注册平台及流程

    二级域名怎么注册 二级域名注册平台及流程

    今天带来的IT技巧小经验二级域名怎么注册和二级域名注册平台及流程的介绍,接下来小编为网友介绍。 什么是二级域名? 按照严格的标准来划分,顶级域名的下一级才是二级域名。其中顶级

  • 服务器配置参数有哪些 公司服务器搭建与配置教程

    服务器配置参数有哪些 公司服务器搭建与配置教程

    全面的为您讲解服务器配置参数有哪些和公司服务器搭建与配置教程方面的介绍,下面为详细的介绍。 如何选择合适自己的服务器?? 一、服务器配置介绍 1.对于1核2G 1M的服务器,主要用来部

  • 网络网站开发公司有哪些 创建自己的网站平台

    网络网站开发公司有哪些 创建自己的网站平台

    跟大家分享网络网站开发公司有哪些和创建自己的网站平台方面的讲解,接下来IT袋小编就来介绍。 互联网现在已经成为了我们生活的一部分。互联网经济为企业提供了一个新的发展渠道。很

  • OSPFv3 LSA类型有哪几种

    OSPFv3 LSA类型有哪几种

    小编带来的是OSPFv3的电脑小知识,接下来就是全面介绍。 在OSPFv3(Open Shortest Path First version 3)协议中,链路状态广告(LSA)是关键的信息传递单元,用于在路由器之间传播网络的链路状态信息