您当前的位置: 首页 > 

cuiyaonan2000

暂无认证

  • 0浏览

    0关注

    248博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Lock & Synchronized

cuiyaonan2000 发布时间:2022-07-12 16:47:48 ,浏览量:0

序言
  1. ConcurrentHashMap在Jdk1.7的实现是:Segment +单向链表+ReentrantLock   实现
  2. ConcurrentHashNap在Jdk1.8的实现是:Node+单向链表+红黑树的结构+CAS+Synchronized+Volatile 实现.

这里所谓的安全只能针对同一时间,的put操作和get操作的安全cuiyaonan2000@163.com.这里整理一下Synchronized 和 ReentrantLock的相关信息

巨人肩膀:

  1. Synchronized与ReentrantLock区别总结(简单粗暴,一目了然)_奋力奔跑的蜗牛的博客-CSDN博客_synchronized和reentrantlock
  2. Java并发编程:Synchronized底层优化(偏向锁、轻量级锁) - liuxiaopeng - 博客园
Launch

synchronized是Java的关键字,而Lock是在java.util.concurrent下的一个类.由此可以明确synchronized是由Jvm底层来实现的锁,而Lock是由Api即代码层面实现的锁(JDK 1.5之后).

参照如下代码,可以看到Lock的实现有3步,而synchornized则省事一点(但是不够灵活)

  1. 创建Lock的实现类(Lock是个接口,它的实现类其实有很多不止ReentrantLock )
  2. 调用lock()方法加锁
  3. 调用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            
关注
打赏
1638267374
查看更多评论
0.0359s