编程语言
首页 > 编程语言> > Java:同步列表

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