当我们说我们使用synchronized关键字锁定一个对象时,这是否意味着我们正在获取整个对象的锁或仅锁定了该块中存在的代码?Java同步锁
在下面的例子中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);
}