java中的同步语句是否可以防止在没有同步语句的情况下访问线程的其他线程中同步对象的修改?我是多线程编程的新手,对我在这个问题上找到的文档感到困惑。
假设我有以下代码。
public class Test {
public ArrayList<Integer> items = new ArrayList<Integer>();
public Test(ArrayList<Integer> items) {
this.items = items;
}
public void perform() {
synchronized(items) {
int size = items.size();
for(int n = 0; n < 10000; n++) {
for(int i = 0; i < size; i ++) {
items.set(i, items.get(i) + 1);
}
}
}
}
当“执行”中的内部循环正在运行时,尽管整个循环包含在“同步(项目)”语句中,但是否可以在另一个线程中修改“项目”?或者“同步”语句是否仅防止其他使用“同步(项目)”本身请求锁定“项目”的块的修改?
提前感谢您的帮助。