3 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
Spring 項(xiàng)目中很多 bean 都設(shè)計(jì)成配置完成后線程安全的, 也是就是在 Spring 初始化階段, 因?yàn)?Spring 本身是單線程初始化, 不會(huì)遇到問(wèn)題, 初始化完成后, 不再修改, 屬性只讀, 也就不存在多線程修改造成競(jìng)態(tài)的問(wèn)題. 你要確保在使用過(guò)程中不修改, 也就不需要 ConcurrentHashMap, 反過(guò)來(lái)說(shuō)是要用的.

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
一般情況下Service
線程安全的,并不是因?yàn)樗菃卫模且驗(yàn)樨氀P椭?code>Service基本上都是無(wú)狀態(tài)的。
假設(shè)你是以下面的方式將 Service
注入到Map
的:
@Autowired
private Map<String,TypeInterface> services;
這個(gè)Map
是否需要ConcurrentHashMap
得看你怎么使用這個(gè)services
,假設(shè)你在Spring
初始化以后就不在更新services
中的內(nèi)容只是從中獲取service
,那么沒(méi)必要使用ConcurrentHashMap
。反之如果你會(huì)在之后多線程更新這個(gè)Map
,那么就需要使用ConcurrentHashMap
。

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
線程安全是相對(duì)的,Bean 是單例不假,但是你并不能控制調(diào)用單例里面的方法時(shí)候的線程情況,就像同時(shí)要修改一個(gè)實(shí)例里面的相同屬性一樣。
添加回答
舉報(bào)