序言
- ConcurrentHashMap在Jdk1.7的实现是:Segment +单向链表+ReentrantLock 实现
- ConcurrentHashNap在Jdk1.8的实现是:Node+单向链表+红黑树的结构+CAS+Synchronized+Volatile 实现.
这里所谓的安全只能针对同一时间,的put操作和get操作的安全cuiyaonan2000@163.com.这里整理一下Synchronized 和 ReentrantLock的相关信息
巨人肩膀:
- Synchronized与ReentrantLock区别总结(简单粗暴,一目了然)_奋力奔跑的蜗牛的博客-CSDN博客_synchronized和reentrantlock
- Java并发编程:Synchronized底层优化(偏向锁、轻量级锁) - liuxiaopeng - 博客园
synchronized是Java的关键字,而Lock是在java.util.concurrent下的一个类.由此可以明确synchronized是由Jvm底层来实现的锁,而Lock是由Api即代码层面实现的锁(JDK 1.5之后).
参照如下代码,可以看到Lock的实现有3步,而synchornized则省事一点(但是不够灵活)
- 创建Lock的实现类(Lock是个接口,它的实现类其实有很多不止ReentrantLock )
- 调用lock()方法加锁
- 调用unlock()方法解锁
package nan.yao.cui.test;
import java.util.concurrent.ThreadPoolExecutor;
/**
* @Author: cuiyaonan2000@163.com
* @Description: todo
* @Date: Created at 2022-6-6 9:38
*/
public class Test01 implements Runnable{
public class MyThread implements Runnable{
@Override
public void run() {
}
}
private static Integer theNum = 0;
private static Integer theNum2 = 0 ;
public static void main(String[] args) throws Exception {
Test01 test01 = new Test01();
for(int i = 1; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?