对 java线程synchronized的理解--转自新浪小竞
来源:互联网 发布:excel进行数据分析 编辑:程序博客网 时间:2024/06/07 02:09
Java中内置了对于对象并发访问的支持,每一个对象都有一个监视器(monitor),同时只允许一个线程持有监视器从而进行对对象的访问,那些没有获得监视器的线程必须等待直到持有监视器的线程释放监视器。对象通过synchronized关键字来声明线程必须获得监视器才能进行对自己的访问。
例如
public void test(){
synchronized(obj){
//同步块1
obj.add();
... ...
}
}
当第一个个线程A 走到 synchronized(obj) 时,它将持有 obj 的监视器并执行同步块中的语句,当另一个线程B 走到 synchronized(obj)时,因为 obj 的监视器被A占用,所以B 线程只能排队
但是 假如 又有一个方法:
public void test2(){
synchronized(otherObj){
//同步块2
obj.add();
... ...
}
}
当线程B 去访问 同步块2 时,B将持有 otherObj 的监视器,并执行 obj.add()等代码,这时虽然 线程A持有obj的 监视器,但是 线程B 还是可以执行 obj.add(),因为 只要线程B 持有otherObj 监视器 就可以进入 同步块2
判断 线程 能否 执行同步块中的语句,只要看 该线程 是否持有 锁对象 的监视器,持有监视器 代表可以锁住 这个同步快,让其他 的线程 无法同时执行这个同步块,但并不是 锁住了这个锁对象,不代表其他线程无法访问这个锁对象
就像 线程A 和线程 B,因为 他们分别 持有 obj和 otherObj 监视器,所以他们 都有权利 进入 各自的同步块中,同时 执行 obj.add(); 所以 这就不能实现 obj.add(); 的同步
- 对 java线程synchronized的理解--转自新浪小竞
- java synchronized关键字以及对线程锁的理解
- 梳理对Java的synchronized的理解
- 对Java关键字synchronized的一些理解
- 对java中synchronized的一点理解
- 对java 同步synchronized 的理解
- 对java synchronized 关键字的理解
- 对java synchronized 关键字的理解二
- 对java synchronized方法的深入理解
- 对Java中线程安全Synchronized的深入理解和运用
- 对synchronized 的理解
- 对 synchronized 的理解
- 对synchronized的理解
- Java synchronized的理解!(线程安全,线程同步)
- 对java线程的理解
- java的线程同步机制synchronized关键字的理解
- java的线程同步机制synchronized关键字的理解
- java的线程同步机制synchronized关键字的理解
- 我的博客开通了。。www.diuyo.cn
- ACE_Message_Block功能简介
- Linux内存初始化
- C++继承例题
- 转载:Android中如何修改系统时间(应用程序获得系统权限)
- 对 java线程synchronized的理解--转自新浪小竞
- img.ph.126.net
- C代码 贪吃蛇
- C++异常和Windows结构异常的比较
- POJO
- 什么时候在虚函数(接口)前面加“On”前缀表示事件?
- 基于Visual Studio 2010 进行敏捷/Scrum模式开发
- Java与模式笔记(9)
- 系出名门Android(9) - 数据库支持(SQLite),