Java线程同步使用的“监视器”和“对象锁"
来源:互联网 发布:linux命令大全txt下载 编辑:程序博客网 时间:2024/06/05 15:56
在JVM的规范中,有这么一些话:
“在JVM中,每个对象和类在逻辑上都是和一个监视器相关联的”
“为了实现监视器的排他性监视能力,JVM为每一个对象和类都关联一个锁”
“锁住了一个对象,就是获得对象相关联的监视器”
监视器好比一做建筑,它有一个很特别的房间,房间里有一些数据,而且在同一时间只能被一个线程占据,进入这个建筑叫做"进入监视器",进入建筑中的那个特别的房间叫做"获得监视器",占据房间叫做"持有监视器",离开房间叫做"释放监视器",离开建筑叫做"退出监视器".
而一个锁就像一种任何时候只允许一个线程拥有的特权.
一个线程可以允许多次对同一对象上锁.对于每一个对象来说,java虚拟机维护一个计数器,记录对象被加了多少次锁,没被锁的对象的计数器是0,线程每加锁一次,计数器就加1,每释放一次,计数器就减1.当计数器跳到0的时候,锁就被完全释放了.
java虚拟机中的一个线程在它到达监视区域开始处的时候请求一个锁.JAVA程序中每一个监视区域都和一个对象引用相关联.
在java中,synchronized是唯一实现同步的东西。
“在JVM中,每个对象和类在逻辑上都是和一个监视器相关联的”
“为了实现监视器的排他性监视能力,JVM为每一个对象和类都关联一个锁”
“锁住了一个对象,就是获得对象相关联的监视器”
监视器好比一做建筑,它有一个很特别的房间,房间里有一些数据,而且在同一时间只能被一个线程占据,进入这个建筑叫做"进入监视器",进入建筑中的那个特别的房间叫做"获得监视器",占据房间叫做"持有监视器",离开房间叫做"释放监视器",离开建筑叫做"退出监视器".
而一个锁就像一种任何时候只允许一个线程拥有的特权.
一个线程可以允许多次对同一对象上锁.对于每一个对象来说,java虚拟机维护一个计数器,记录对象被加了多少次锁,没被锁的对象的计数器是0,线程每加锁一次,计数器就加1,每释放一次,计数器就减1.当计数器跳到0的时候,锁就被完全释放了.
java虚拟机中的一个线程在它到达监视区域开始处的时候请求一个锁.JAVA程序中每一个监视区域都和一个对象引用相关联.
在java中,synchronized是唯一实现同步的东西。
- Java线程同步使用的“监视器”和“对象锁"
- java中线程同步Synchronized,监视器monitor和锁lock的关系是什
- 线程同步---释放同步监视器的锁定
- [疯狂Java]线程同步:同步监视器、同步方法、同步锁、死锁
- java对象锁和线程同步
- 线程-对象锁的同步和异步
- 线程: 同步对象的使用
- Java的多线程之同步篇三:同步阻塞、监视器、volatile、final、原子性、线程局部变量、锁测试与超时、读写锁
- Java线程的同步与锁-java同步和锁定
- Java监视器-同步基本概念
- Java线程同步的使用
- java线程安全篇之synchronized对象锁的同步和异步(三)
- 线程同步的内核对象的使用
- java基础之线程的同步(同步块和同步方法的使用)
- java多线程-用对象锁的方式控制线程同步
- java实现部分线程的同步。对象锁
- 线程同步之Lock对象的使用
- Java 同步监视器中的 wait() 和 notify() 方法的具体实现
- MangoDB创建、更新、删除文档
- edge-coloring来解决进程间一对一通信。
- Populating Next Right Pointers in Each Node
- hdu 3788 ZOJ问题
- Javascript作用域和变量提升
- Java线程同步使用的“监视器”和“对象锁"
- 《C Primer Plus》阅读笔记(3)
- matlab下使用libsvm的一点儿总结(不断更新)
- 中频 - IF
- POJ 2187 Beauty Contest
- Http和Socket连接区别
- struts2中s:select标签的使用(转)
- Android增量升级
- 没事瞎设计