list線程怎么變安全的?
1、java.util.Vector 所有的操作方法都是 synchronized 修飾, 確保線程安全
2、java.util.Collections.synchronizedList(list) 同樣利用 synchronized 代碼塊, 包裝原 list 的操作, 實現線程安全
3、java.util.concurrent.CopyOnWriteArrayList 讀寫分離的思想, 寫上鎖, 讀無鎖. 寫入時, 加鎖 (利用了 java.util.concurrent.locks.ReentrantLock 上鎖), 復制原數組 (并且數組長度 + 1, 賦值數組末尾元素為要新增的元素), 再更新數組的引用, 解鎖.
下一篇如果領導錯了