JUC包下的线程安全的list和人为使ArrayList线程安全
- 可以人为的模拟出一个线程安全的list,使用synchronized (object){}
- JUC包下的CopyOnWriteArrayList
import java.util.concurrent.CopyOnWriteArrayList;
CopyOnWriteArrayList<Object> list = new CopyOnWriteArrayList<>();
list线程不安全的原因 demo
class UnSafeList{
public static void main(String[] args) {
List<String> list = new ArrayList<>();
for (int i = 0; i < 10000; i++) {
new Thread(()->{
list.add(Thread.currentThread().getName());
}).start();
}
//原因:同时多个线程操作同一个位置,值被覆盖,所以数量不足1000个
System.out.println(list.size());
}
}