黑马程序员技术交流社区
标题:
同步代码块为何需要一个对象呢?
[打印本页]
作者:
冷月霜飞
时间:
2015-5-15 17:12
标题:
同步代码块为何需要一个对象呢?
synchronized(对象){
//需要被同步的代码
}
复制代码
同步代码块儿为何一定需要一个对象呢?记得之前讲过的静态代码块儿,和构造代码块儿,都没有对象,虽然死记硬背知道这个对象是把锁,但是一直不理解为何需要这个对象,哪位师兄帮忙解释一下?
作者:
pvbj0314
时间:
2015-5-15 19:07
本帖最后由 pvbj0314 于 2015-5-15 19:09 编辑
每个对象都包含了一把锁(也叫作“监视器”),它自动成为对象的一部分(不必为此写任何特殊的代码)。
使用synchronized 关键字,以设置一个关键区域。
Java 通过“同步块”提供对关键区域的支持;这一次,我们用 synchronized 关键字指出对象的锁用于对其中封闭的代码进行同步。如下所示:
synchronized(syncObject) {
// This code can be accessed by only
// one thread at a time, assuming all
// threads respect syncObject's lock
}
复制代码
在能进入同步块之前,必须在 synchObject 上取得锁。如果已有其他线程取得了这把锁,块便不能进入,必须等候那把锁被释放。以上内容摘自《Think in java》,你可以网上搜一下,第4版有中文的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2