jvm中锁的优化
来源:互联网 发布:淘宝砖石卖家信誉好吗 编辑:程序博客网 时间:2024/05/18 10:11
除了上一篇提到通过锁膨胀来对锁机制进行优化外,还存在:
1.自旋锁(轻量级锁中用到了)
线程未获得资源时,不直接阻塞,而是通过执行一段空循环,来等待锁释放,然后获取锁,若执行了指定的循环次数后,线程还是没有获得锁资源,会被挂起。这种适用于不是很多线程,每个线程的执行时间很短。
2.自适应自旋锁
是对自旋锁的优化,通过前一个线程在该锁上的自旋时间和锁拥有者的状态来决定自旋次数
3.锁消除
当不存在多线程对资源的竞争,jvm会自动剔除该共享资源的锁,把这段共享资源当作线程私有资源来用。
4.锁粗化
当存在对一个对象连续的加锁,释放锁,或在循环内部对该对象加锁,则可以将该锁扩展为一个大锁,避免不断的锁的获得,释放过程。
5.分段加锁(锁细化)
典型的例子是concurrentHashMap的锁分段技术,对一段数据添加多段锁,(例如A,B段)一个线程在对A端段进行写入时,另一个线程完全可以操作B段,因为其对应不同的锁。这样能大大提高多线程的执行效率。
6.读写分离
典型的例子是concurrent包下的ReadWriteLock,此锁通过添加一个读锁(共享锁),写锁(互斥锁)来提高多线程的访问效率。
还有很多锁优化的方法,这需要具体情况具体说明,例如锁粗化和细化对应的情况是不同的。
阅读全文
0 0
- jvm中锁的优化
- java中锁的优化 -- JVM对synchronized的优化
- JVM中锁优化简介
- JVM中锁优化简介
- JVM中锁优化简介
- JVM之锁的优化
- jvm系列 (三) ---锁的优化
- jvm系列 (三) ---锁的优化
- JVM的优化
- JVM的内存优化
- Java JVM的优化
- JVM的优化
- JVM的优化
- JVM的内存优化
- JVM参数的优化
- JVM虚拟机中对字节码优化的策略
- JVM锁优化总结
- JVM的监控与优化
- SimpleLauncher(桌面程序)开发
- xml学习心得笔记
- 【原创】git的相关基础知识笔记(二)
- 简述alert()和console.log()的区别
- oracle中的add_months()函数
- jvm中锁的优化
- (hdu1874)畅通工程续(dijkstra算法)
- Restaurant Tables
- HDU5336题解
- dubbo发布webservice服务
- TensorFlow实现进阶的神经网络
- phpcms配置数据库
- hdu 2577- How to Type (dp)&&(模拟)
- 数据结构封装之《SQueue栈式队列》