色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

wait方法和BlockingQueue

wait方法和BlockingQueue?

1.wait/notify是Object提供的native方法,可以用來(lái)線程之間的通信。

wait/notify結(jié)合synchronized可以實(shí)現(xiàn)一個(gè)線程安全的消息隊(duì)列。

2、BlockingQueuee

BlockingQueue是JDK提供的線程安全的消息隊(duì)列,對(duì)增加、刪除、獲取提供了四種的操作:

1、阻塞(put、take)

2、拋異常(add,remove)

3、阻塞等待超時(shí)(offer,poll)

4、返回特殊值(offer,poll)

BlockingQueue是個(gè)接口,JDK也提供了相應(yīng)的實(shí)現(xiàn),實(shí)現(xiàn)中主要使用Lock和Condition,Condition有await和signal方法,類(lèi)似wait和notify方法。

想要了解Lock的機(jī)制或者自己要實(shí)現(xiàn)一個(gè)鎖,就得了解

AQS(AbstractQueuedSynchronizer)是什么了,Lock的具體實(shí)現(xiàn)

ReentrantLock,ReadLock, WriteLock都是基于

AQS實(shí)現(xiàn)的,這里暫時(shí)不說(shuō)AQS了,說(shuō)下 BlockingQueue具體的幾個(gè)實(shí)現(xiàn):

1、ArrayBlockingQueue:有界隊(duì)列,底層是數(shù)組

2、LinkedBlockingQueue:無(wú)界隊(duì)列,底層是個(gè)單向鏈表

3、 SynchronousQueue:同步隊(duì)列,不提供任何容器來(lái)存放數(shù)據(jù)

4、PriorityBlockingQueue:優(yōu)先級(jí)無(wú)界隊(duì)列,底層是二叉樹(shù)最小堆

5、DelayQueue:支持延時(shí)獲取元素的無(wú)界阻塞隊(duì)列。底層是使用 PriorityQueue來(lái)實(shí)現(xiàn)。

所以,wait/notify和BlockingQueue都可以實(shí)現(xiàn)消息隊(duì)列,解決生產(chǎn)者和消費(fèi)者的問(wèn)題。不過(guò)BlockingQueue的實(shí)現(xiàn)提供更多的功能。

希望對(duì)你有幫助,可以關(guān)注下我,后續(xù)會(huì)分享更多架構(gòu)和Java知識(shí),謝謝。

隊(duì)列 java,wait方法和BlockingQueue