您好,登錄后才能下訂單哦!
1.ConcurrentModificationException
出現(xiàn)這種的原因是遍歷(iterator或增強(qiáng)循環(huán))同步類(lèi)容器時(shí),同時(shí)對(duì)容器內(nèi)的元素進(jìn)行修改造成的,可以用普通for循環(huán)解決。因?yàn)槠胀╢or循環(huán)是一個(gè)線程操作。
2.普通容器想變成線程安全的容器,那么用Collections.synchronizedCollection方法就可以實(shí)現(xiàn).
3.concurrentHashMap分為16個(gè)segment片,計(jì)算size用的volitile修飾,而取值 ,和賦值是,在每一個(gè)segment內(nèi)加入鎖,在segment之間不加鎖。
4.copyonwrite,每次進(jìn)行寫(xiě)操作的時(shí)候,都要在原線程的數(shù)據(jù)中復(fù)制一次。操作完成之后,都會(huì)把新修改的數(shù)據(jù)再賦值回去,不適合做list元素比較多的場(chǎng)景。同時(shí)修改時(shí),有鎖。
5.各種隊(duì)列,阻塞隊(duì)列,非阻塞隊(duì)列和×××隊(duì)列,有界隊(duì)列?!痢痢陵?duì)列,add和offer是一樣的作用。阻塞隊(duì)列,add添加不進(jìn)去報(bào)異常,offer添加不進(jìn)去返回false,或者可以設(shè)定等待時(shí)間。put方法就阻塞再那里。poll方法從對(duì)手有值則返回,物質(zhì)則返回失敗。take方法,無(wú)值時(shí),阻塞再那里直到有值。drainTo,提升效率的一次性獲取多個(gè)元素。
6.concurrentLinkQueue基于無(wú)阻塞×××隊(duì)列 ,poll,取值移除,peek,取值不移除。
7.ArrayBlockingQueue基于阻塞有界隊(duì)列。
8.linkedblockingqueue阻塞×××隊(duì)列。
9.SynchronousQueue不能城防任何元素的阻塞隊(duì)列。
10.ProrityBlockingQueue,添加的時(shí)候有一個(gè)二分算法,取值的時(shí)候,有一個(gè)比較算法,取出優(yōu)先級(jí)最高的。
11.DelayQueue有g(shù)etDelay方法和compareTo方法,用于延遲時(shí)間的設(shè)定和元素之間的比較排序
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。