7 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
你開(kāi)車需要系安全帶,騎摩托車需要帶頭盔,但是并不代表你在家睡覺(jué)也要系安全帶帶頭盔(當(dāng)然你不嫌麻煩也可以這么干)。
在單線程環(huán)境下(~在家睡覺(jué)~),你可以使用線程安全或者非現(xiàn)場(chǎng)安全的類,但是非現(xiàn)場(chǎng)安全的類通常性能更高,且在單線程情況下也不存在安全問(wèn)題。
在多線程的情況下(~開(kāi)車騎摩托車~),你必須犧牲性能,用線程安全的類。

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
因?yàn)槭褂脠?chǎng)景有并發(fā)和非并發(fā)的區(qū)別。如果非得需要解決線程安全問(wèn)題,比如集合類,它又提供了一個(gè)集合的工具類實(shí)現(xiàn)同步。個(gè)人理解,先追求速度,這能給用戶帶來(lái)體驗(yàn),安全性如果需要就還可以擴(kuò)展。

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
魚(yú)與熊掌不可兼得,線程安全通常都是要加鎖和解鎖的,不但會(huì)對(duì)設(shè)計(jì)上造成復(fù)雜性(比如要想辦法避免死鎖問(wèn)題),而且會(huì)對(duì)性能造成顯著的影響。
而絕大多數(shù)場(chǎng)景下都是單線程同步模型,壓根不用考慮線程安全問(wèn)題。

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
如果我理解你的問(wèn)題正確: 為什么不是所有的Collections都是線程安全的?原因有:
- 實(shí)現(xiàn)線程安全是非常困難,如果不是不可能的
- 犧牲性能代價(jià)可能很大
- 大多數(shù)應(yīng)用場(chǎng)景下線程安全是不必要的。
所以說(shuō),你的問(wèn)題看起來(lái)有點(diǎn)像:“有總比沒(méi)有好,用不用是我的事”,答案是:“有不是總比沒(méi)有好,有是需要付出代價(jià),而這代價(jià)通常你不需要付出或盡量避免的”。因?yàn)镸ap/List/...應(yīng)用的場(chǎng)景通常不需要線程安全的,所以在絕大多數(shù)的情況下HashTable/Vector/...被HashMap/ArrayList/...代替了

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
不線程安全才是默認(rèn)狀態(tài)。如果不特意做些事情,基本上沒(méi)有東西是線程安全。所以談不上 "放棄"。
不線程安全不等于沒(méi)用,有一些情況是不需要線程安全的,少做這些事的代碼可能更快。
添加回答
舉報(bào)