我对此的理解是,一个synchronized
块会阻止其他线程访问,直到该块终止为止。也就是说,它们通过当前执行的类(?)持有的锁被搁置到那时。
所以我包装了一个for
迭代列表的块,然后在一个块clear()
中直接调用该列表。synchronized
因为我不能让其他线程添加到这两组操作之间的列表中。这是按照文档说的,
当迭代它时,用户必须手动同步返回的集合......
但是,当我进入列表时,我无法确定是否需要做同样的事情add
。我猜不是,因为在我的情况下,add
来自不同线程的操作顺序并不重要。我想我不确定的是 un synchronized
modify操作是否会产生任何负面影响?