同步类容器
同步類容器
是線程安全的
但是,在某些場景下
可能需要加鎖來保護(hù)復(fù)合操作
復(fù)合類操作,比如
迭代,反復(fù)訪問元素、遍歷完容器中所有元素
跳轉(zhuǎn),根據(jù)指定的順序,找到當(dāng)前元素的下一個元素
以及條件運(yùn)算等
這些復(fù)合操作在多線程,并發(fā)的修改容器時
可能會表現(xiàn)出意外的行為,經(jīng)典的是ConcurrentModificationException
因?yàn)?#xff0c;當(dāng)容器迭代的過程中,被并發(fā)的修改了內(nèi)容
這是,由于早期迭代器設(shè)計(jì)的時候,并沒有考慮并發(fā)修改的問題
同步類容器,比如
Vector、HashTable
這些容器的同步功能,其實(shí)
都是有JDK的Collections.Synchronized等,工廠方法去創(chuàng)建實(shí)現(xiàn)的
底層的機(jī)制,無非就是用傳統(tǒng)的synchronized關(guān)鍵字
對每個公用的方法都進(jìn)行同步,使得每次只能有一個線程訪問容器的狀態(tài)
這明顯不是互聯(lián)網(wǎng)高并發(fā)的需求
在保證線程安全的同時,必須有有足夠好的性能
運(yùn)行
總結(jié)
- 上一篇: Spring boot指定日志配置
- 下一篇: 并发类容器