synchronized锁机制原理
来源:互联网 发布:淘宝店铺怎么分享连接 编辑:程序博客网 时间:2024/05/17 07:49
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。
数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU指令,大家可能会进一步追问:JVM底层又是如何实现synchronized的?
因此静态方法锁相当于该类的一个全局锁;当synchronized作用于某一个对象实例时,锁住的便是对应的代码块。在HotSpot JVM实现中,锁有个专门的名字:对象监视器。
1. 线程状态及状态转换
Contention List:所有请求锁的线程将被首先放置到该竞争队列
Entry List:Contention List中那些有资格成为候选人的线程被移到Entry List
Wait Set:那些调用wait方法被阻塞的线程被放置到Wait Set
OnDeck:任何时刻最多只能有一个线程正在竞争锁,该线程称为OnDeck
Owner:获得锁的线程称为Owner
!Owner:释放锁的线程
下图反映了个状态转换关系:
偏向原子性。
- synchronized锁机制原理
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- java锁机制Synchronized
- Java锁机制synchronized
- synchronized锁机制
- java synchronized 锁机制
- Java锁机制--synchronized
- Java 锁机制 synchronized
- synchronized锁的原理
- VS2008使用出错问题收集
- 读 Beginning Android Games 2nd Edition (二十一) 封装OpenGL之GLGraphics类
- 浙江行记五:最后的兄弟连
- Linux 中断学习之小试牛刀篇
- poj1363
- synchronized锁机制原理
- H.264 RTP payload 格式
- PHP生成GUID
- Java.lang.Object类中应用在多线程的几种方法介绍
- 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclips
- linux下C编程笔记
- 如何制作Jar包并在android中调用jar包
- NIO2实例
- 详解SAP如何新建和COPY CLIENT以及常见问题解析