Java:同步列表
作者:互联网
我有一个ArrayList,并且只能在同步块中操作它,我也应该使用Collections.synchronizedList吗?
例:
List list = Collections.synchronizedList(new ArrayList());
// versus List list = new ArrayList();
synchronized(list) {
// my code
}
解决方法:
>如果仅在同步块内访问列表,则不需要syncedList()
>如果仅使用基本操作(add(),remove()等)访问列表,并且这些操作的调用互不依赖(即原子性不成问题),则只能使用syncedList()而不使用显式同步块
>如果您希望能够在没有同步块的情况下调用基本操作,但又具有应为原子的复合操作(包括迭代),则对于复合操作,既需要syncList()又需要synchornized块
标签:multithreading,list,synchronization,java 来源: https://codeday.me/bug/20191122/2056106.html