WhatsApp网页版登录WhatsApp网页版登录

WhatsApp中文版

同步代码块的锁是什么

synchronized

synchronized锁synchronized锁对象锁类锁判断是同步还是异步关键看是不是同一把锁synchronized锁的底层实现原理jvm是基于进入和退出Monitor对象来实现方法同步和代码块同步代码块的同步

当jvm执行到monitorenter指令的时候,试图获取monitor对象的所有权,获取成功锁的计数器+1,当执行到monitorexit的时候,锁计数器-1,当锁计数器=0,锁就被释放,如果获取monitor对象失败telegram中文版,就会进入阻塞的状态

方法级的同步为隐式synchronized锁升级过程1、无锁状态2、偏向锁3、轻量级锁乐观锁4、重量级锁synchronized锁优化减少synchronized的范围,同步代码块中的代码尽量少降低synchronized锁的粒度分段锁读写分离,读取时不加锁,写入和删除的时候上锁锁消除锁粗化1.6引入的自适应锁自旋CAS定义:在并发量不是很高的情况下whatsapp网页版,先查一次,然后进行修改,在真正的写数据时,会再查一次,比较两次查询的结果,如果不一样说明是不安全的,如果一样说明安全,会进行修改在高并发的情况下,会有一个忙循环的过程,消耗cpuABA问题CAS只能针对一个共享变量ReentrantLock与synchronized的区别1、从jvm角度来看synchronized其实jvm的一个关键字,ReentrantLock是一个类2、synchronized不需要关心锁的释放whatsapp网页版,ReentrantLock需要手动lock利用try..catch..finanlly释放锁所有线程能够看到共享内存的最新状态volatile关键字保证内存的可见性防止指令重排不保证原子性PS:底层通过屏障指令保证可见性、有序性,刷新主从的数据ps:锁是不可逆的,一旦升级成重量级的锁就不变了lock与synchronized的区别lock需要手动加锁、释放锁synchronized在发生异常,会自动释放线程占有锁,不会发生死锁,lock必须将unLock()放到finally{} 中lock支持实现公平锁(按照加锁的顺序,先来的先拿到锁)和非公平锁,synchronized只支持非公平锁死锁产生的四个必要条件互斥条件请求和保持不剥夺条件环路等待条件案例synchronized保证内存可见性

image.png

AQS定义:队列同步器两种资源共享方式

Share

本质使用CLH的同步队列存放线程资源锁的基本概念互斥锁阻塞锁自旋锁读写锁公平锁非公平锁ReentrantLock相比于synchronized性能会好些互斥锁ReentrantReadWriteLock锁降级JUCCyclicBarrierSemaphoreCountDownLatchatomic包

©著作权归作者所有,转载或内容合作请联系作者

相关文章

«    2025年8月    »
123
45678910
11121314151617
18192021222324
25262728293031

控制面板

您好,欢迎到访网站!
  查看权限

网站分类

最近发表

最新留言

    文章归档

    标签列表

    友情链接