ArrayList 不是线程安全,可以通过Collections.synchronizedList生成线程安全的list
Collections.synchronizedList(new ArrayList())
该方法的本质是:在对原始arraylist操作时,都会增加关键字synchronized 保证线程安全(类似静态代理)。
public E get(int index) {
synchronized(mutex) {return list.get(index);}
}
public E set(int index, E element) {
synchronized(mutex) {return list.set(index, element);}
}
public void add(int index, E element) {
synchronized(mutex) {list.add(index, element);}
}
public E remove(int index) {
synchronized(mutex) {return list.remove(index);}
}