【发布时间】:2011-07-23 20:24:41
【问题描述】:
当我们说我们使用 synchronized 关键字锁定一个对象时,这是否意味着我们正在获取整个对象的锁定,还是只锁定该块中存在的代码?
在下面的例子中listOne.add是同步的,这是否意味着如果另一个线程访问listOne.get它会被阻塞,直到第一个线程退出这个块?如果第二个线程在第一个线程仍在同步块中时访问同一对象的实例变量上的listTwo.get 或listTwo.add 方法怎么办?
List<String> listONe = new ArrayList<String>();
List<String> listTwo = new ArrayList<String>();
/* ... ... ... */
synchronized(this) {
listOne.add(something);
}
【问题讨论】:
标签: java concurrency synchronized