我想迭代一个java List,使用旧的方式for(int i ...)循环,因为对于给定的i和循环迭代,我想访问多个相对于i的元素。然后我不能使用(Object o:objects)列表迭代器。关于java同步的简单问题
我该如何确保在执行它时没有其他代码可以访问列表?
我试图
synchronized(path.getPoints()){
for (int i = 0; i < path.getPoints().size(); i++){
...
}
}
其中路径对象容纳的列表,并且还
synchronized(path){
for (int i = 0; i < path.getPoints().size(); i++){
...
}
}
也
synchronized(this){
for (int i = 0; i < path.getPoints().size(); i++){
...
}
}
其中 “这” 是想渲染器在没有同步问题的情况下退出路径。
由于提前,
马丁
您发布的同步代码应该适用于所有三种情况。你确定你没有其他线程访问同步守卫之外的路径吗? – templatetypedef 2011-03-31 09:44:39
是什么让你认为另一个线程正在访问列表? – 3urdoch 2011-03-31 09:47:12
@murdoch:我有一个编辑器线程在后台运行,一个UI线程连续运行并呈现点列表。 @template:我只同步这两个线程中的一个,而不是两个 – Martin 2011-04-01 10:31:03