当前位置: 首页 > 面试题库 >

Java:JVM 对 Java 的原生锁做了哪些优化?

郝君博
2023-04-24

(1)自旋锁

在线程进行阻塞的时候,先让线程自旋等待一段时间,可能这段时间其它线程已经解锁,这时就无需让线程再进行阻塞操作了。

自旋默认次数是10次。

(2)自适应自旋锁

自旋锁的升级,自旋的次数不再固定,由前一次自旋次数和锁的拥有者的状态决定。

(3)锁消除

在动态编译同步代码块的时候,JIT编译器借助逃逸分析技术来判断锁对象是否只被一个线程访问,而没有其他线程,这时就可以取消锁了。

4、锁粗化

当JIT编译器发现一系列的操作都对同一个对象反复加锁解锁,甚至加锁操作出现在循环中,此时会将加锁同步的范围粗化到整个操作系列的外部。

锁粒度:不要锁住一些无关的代码。

锁粗化:可以一次性执行完的不要多次加锁执行。

 类似资料:
  • 本文向大家介绍axios相比原生ajax的优点有哪些呢?相关面试题,主要包含被问及axios相比原生ajax的优点有哪些呢?时的应答技巧和注意事项,需要的朋友参考一下 从 node.js 创建 http 请求 在浏览器中创建 XMLHttpRequests 支持 Promise API 提供了一些并发请求的接口(重要,方便了很多的操作) 支持拦截请求和响应 转换请求和响应数据 取消请求 自动转换

  • 本文向大家介绍做过哪些MySQL索引相关优化?相关面试题,主要包含被问及做过哪些MySQL索引相关优化?时的应答技巧和注意事项,需要的朋友参考一下 尽量使用主键查询: 聚簇索引上存储了全部数据, 相比普通索引查询, 减少了回表的消耗. MySQL5.6之后引入了索引下推优化, 通过适当的使用联合索引, 减少回表判断的消耗. 若频繁查询某一列数据, 可以考虑利用覆盖索引避免回表. 联合索引将高频字段

  • 本文向大家介绍js的new操作符做了哪些事情?相关面试题,主要包含被问及js的new操作符做了哪些事情?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: new 操作符新建了一个空对象,这个对象原型指向构造函数的prototype,执行构造函数后返回这个对象。

  • 我在playstore有一个11K的应用程序。该应用程序是本地Java的。我做了一个react原生应用程序与相同的包名,并更改了jks密钥到密钥存储文件和更改了版本代码。我正在使用的应用程序存储jks文件,我得到这个错误,我知道通过卸载解决,但我不能告诉用户卸载,有没有其他方式执行失败的任务':app:installrelease'。 com.android.builder.testing.api

  • 本文向大家介绍es6对es5有哪些方面的优化呢?相关面试题,主要包含被问及es6对es5有哪些方面的优化呢?时的应答技巧和注意事项,需要的朋友参考一下 引入了let和const解决了var变量提升带来的问题,同时引入箭头函数解决this访问问题。

  • 本文向大家介绍说说 JDK1.6 之后的synchronized 关键字底层做了哪些优化,可以详细介绍一下这些优 化吗?相关面试题,主要包含被问及说说 JDK1.6 之后的synchronized 关键字底层做了哪些优化,可以详细介绍一下这些优 化吗?时的应答技巧和注意事项,需要的朋友参考一下 JDK1.6 对锁的实现引入了大量的优化,如偏向锁、轻量级锁、自旋锁、适应性自旋锁、锁消除、锁粗化等技术