所以,如果一个程序这样做:
static ArrayList<X> a = null;
static{
for(;;){X x = new X(); a.add(x)}
}
Run Code Online (Sandbox Code Playgroud)
在共享列表上静态初始化之后调用的唯一操作是get()和xt()
X x = a.get(i); x.t();
Run Code Online (Sandbox Code Playgroud)
和X没有访问容器并且是线程安全的,这应该意味着像这样使用Arraylist,没有同步是线程安全的,对吗?
如果打算在创建列表后不对其进行修改,则强制执行以下操作:将其包装ArrayList在a中Collections.unmodifiableList().
更好的是,如果你有番石榴,可以使用ImmutableList.
| 归档时间: |
|
| 查看次数: |
1493 次 |
| 最近记录: |