没有合适的资源?快使用搜索试试~ 我知道了~
java的线程同步机制synchronized关键字的理解
4星 · 超过85%的资源 需积分: 48 11 下载量 50 浏览量
2011-10-25
22:54:35
上传
评论 1
收藏 85KB PDF 举报
温馨提示
试读
3页
java的线程同步机制synchronized关键字的理解java的线程同步机制synchronized关键字的理解java的线程同步机制synchronized关键字的理解java的线程同步机制synchronized关键字的理解java的线程同步机制synchronized关键字的理解java的线程同步机制synchronized关键字的理解java的线程同步机制synchronized关键字的理解java的线程同步机制synchronized关键字的理解java的线程同步机制synchronized关键字的理解
资源推荐
资源详情
资源评论
线程同步:
由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,
也带来了访问冲突这个严重的问题 。 Java 语言提供了专门机制以解决这种冲突
,
有效避免了同一个数据对象被多个线程同时访问。
需要明确的几个问题:
1)synchronized 关键字可以作为函数的修饰符,也可作为函数内的语
句,也就是平时说的同步方法和同步语句块。如果再细的分类, synchronize d
可作用于 instance 变量 、 object reference ( 对象引用 ) 、 static 函数和 class
literals( 类名称字面常量 ) 身上。
2) 无论 synchronized 关键字加在方法上还是对象上,它取得的锁都是
对象 , 而不是把一段代码或函数当作锁 ―― 而且同步方法很可能还会被其他线程
的对象访问。
3) 每个对象只有一个锁( lock )与之相关联。
4) 实现同步是要很大的系统开销作为代价的 , 甚至可能造成死锁 , 所以
尽量避免无谓的同步控制。
1 、 synchronized 关键字的作用域有二种:
1 )是某个对象实例内, synchronized aMethod(){} 可以防止多个线程
同时访问这个对象的 synchronized 方法(如果一个对象有多个 synchronize d
方法,只要一个线程访问了其中的一个 synchronized 方法,其它线程不能同时
访问这个对象中任何一个 synchronized 方法 ) 。这时,不同的对象实例的
synchronized 方法是不相干扰的。也就是说,其它线程照样可以同时访问相同
类的另一个对象实例中的 synchronized 方法;
2 )是某个类的范围, synchronized static aStaticMethod{} 防止多个
线程同时访问这个类中的 synchronized static 方法。它可以对类的所有对象
实例起作用。
synchronized 方法控制对类成员变量的访问 : 每个类实例对应一把锁
,
每个 synchronized 方法都必须获得调用该方法的类实例的锁方能执行 , 否则所
属线程阻塞,方法一旦执行,就独占该锁,直到从该方法返回时才将锁释放 , 此
后被阻塞的线程方能获得该锁 , 重新进入可执行状态 。 这种机制确保了同一时刻
对于每一个类实例 , 其所有声明为 synchronized 的成员函数中至多只有一个处
于可执行状态(因为至多只有一个能够获得该类实例对应的锁 ) ,从而有效避免
了类成员变量的访问冲突(只要所有可能访问类成员变量的方法均被声明为
synchronized ) 。
在 Java 中 , 不光是类实例 , 每一个类也对应一把锁 , 这样我们也可将类的
资源评论
- wildviolin2012-09-26凑合吧,当作一个简单介绍可以。
- N88X82012-06-17几行文字,一般般~
joker_86
- 粉丝: 0
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功