Java中傳統集合與併發集合的區別


眾所周知,在Java中,集合是一個非常重要的概念,它本身就使Java成為一種強大的語言。正是Java對集合的支援,才使得它能夠方便高效地支援任何型別的資料,並能夠對其進行CRUD操作。

但與此同時,當集合暴露於多執行緒環境時,由於集合在某種程度上缺乏對多執行緒環境的支援,其效能會有一定程度的下降。為了克服這個限制,Java引入了併發集合,它不僅克服了多執行緒環境的限制,而且增強了Java在多執行緒資料處理方面的效能。

以下是傳統集合和併發集合之間的一些重要區別。

序號關鍵點傳統集合併發集合
1執行緒安全Java集合中大多數經典類,例如ArrayList、LinkedList、HashMap等,都不是同步的,在多執行緒環境中也不是執行緒安全的。另一方面,Java在併發集合中引入了相同的類,並在其中實現了同步,這不僅使這些類成為同步的,而且使其本質上也是執行緒安全的。
2鎖機制傳統集合中也有一些同步類,例如Vector和Stack,但這些類對整個集合使用鎖,這會降低執行的效能和速度。另一方面,併發集合引入了部分鎖的概念,在多執行緒環境中,它只鎖定集合的一部分,從而提高了此類環境下集合的效能和速度。
3執行時異常對於傳統集合,如果我們在集合迭代期間嘗試透過單獨的執行緒修改集合,則會得到執行時異常ConcurrentModificationException。另一方面,如果使用併發集合,則不會出現這種異常,即併發集合允許在迭代期間修改集合。
4偏好由於上述原因,傳統集合在多執行緒環境中並不推薦使用。另一方面,併發集合主要在多執行緒環境中推薦使用。
5市場引入時間傳統集合是Java中的遺留集合型別,其引入時間早於併發集合。而併發集合是在JDK 1.5中引入的,即在傳統集合之後引入的。

更新於:2020年2月24日

875 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.