目录
1.2 使用Collections.synchronizedList()套壳加锁
一. 多线程下使用ArrayList
多线程下使用ArrayList会涉及到线程安全问题, 例如:
public static void main(String[] args) throws InterruptedException{ List<Integer> list = new ArrayList<>(); Runnable runnable = () -> { for (int i = 0; i < 50000; i++) { list.add(i); } }; // 创建两个线程 for (int i = 0; i < 2; i++) { new Thread(runnable).start(); } Thread.sleep(5000); System.out.println(list.size()); }
可以发现, 最后的结果并不是期待的100000, 这是因为ArrayList中的add方法并没有处理线程安全问题.