java 同步

2018-10-19 06:31:03来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

本文主要记录java进行同步的方案及锁优化的方法,来自《深入理解jvm》

 

定义

线程安全:多线程访问一个对象时,不用考虑这些线程在运行时环境下的调度与交替执行,也不需要额外的同步或调用方进行任何协调操作,调用这个对象的行为都可以获得正确的结果。

 

同步方法

互斥

1、Synchronized

同一个线程可重入;会陷入内核,属于重量级锁;非公平锁

2、Reentrantlock:可重入锁

默认非公平,可设置;可中断;绑定多个条件;如果不用这些特性,提倡使用Synchronized

 

非阻塞同步

1、Cas

2、无同步方案

(1)可重入代码

(2)线程本地存储

 

锁优化

1、自适应自旋锁

不放弃cpu,忙循环。减少线程切换开销。

2、锁消除

3、锁粗化:防止循环内的加锁

4、轻量级锁:适用于同步无竞争

Cas + mark word实现;

偏向锁:无竞争情况下不加锁

 

ConcurrentHashMap : 使用分段加锁实现。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:SpringMVC使用MultipartFile上传文件

下一篇:5.8 Properties