Arraylist和vector
CopyOnWriteArrayList
Vector是執行緒同步的,可以由兩個執行緒安全的訪問一個Vector物件,但是一個執行緒訪問Vector的話代碼要在同步上消耗大量的時間,Vector擴容一次為原來的兩倍
ArrayList不是同步的,所以在不要求執行緒同步的情況下建議使用ArrayList,需要時使用CopyOnWriteArrayList,ArrayList一次擴容為1.5倍
Vector和CopyOnWriteArrayList
Vector中有synchronized關鍵字修飾方法,虛假的執行緒安全,

解決辦法(大可不必)

所以用CopyOnWriteArrayList來替代
把大象塞冰箱統共分幾步?
把資料寫進里面分幾步?第一步加鎖,第二部copy后操作,第三步開鎖

lock()加鎖
先copy一個新的陣列并且加一位然后再添加進新的,最后我們把舊的拋棄把新的給他set
unlock()解鎖,finally不管操作結果一定要解鎖
洗掉就根據洗掉位置之類的情況進行復制操作
兩大問題:
由于這個特性,我們只能根據結果來看(最終一致性)而不能實時(不滿足實時一致性)
這樣的操作必然也會占用到記憶體,可以酌情來使用其他容器(concurrenthashmap)
有部分圖片借鑒自其他博客,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/262511.html
標籤:其他
上一篇:OpenCV-Python影像處理:仿射變換詳解及案例
下一篇:云計算專業防火墻實驗: 1.防火墻配置管理員用戶為自己的名字; 2.配置3個區域與名字相關; 3.配置策略實作能相互ping通; 4.配置策略實作防火墻能ping 通各個區域的主機。
