欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java中notifywait方法和BlockingQueue(阻塞隊(duì)列)有什么區(qū)別?你怎么理解?

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

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方法,類似wait和notify方法。

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

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

ReentrantLock,ReadLock,WriteLock都是基于

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

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

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

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

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

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

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

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