在前一篇文章Java中的阻塞隊列(BlockingQueue)中介紹了Java中的阻塞隊列。從性能上我們能得出一個結論:數(shù)組優(yōu)于鏈表,CAS優(yōu)于鎖。那么有沒有一種隊列,通過數(shù)組的方式實現(xiàn),而且采用無鎖的結構?嗯,那就是Disruptor,而且比想象中更為強大。

1. 無處不在的鎖

Java中的阻塞隊列采用鎖來實現(xiàn)對臨界區(qū)資源的同步訪問,保證操作的線程安全。
在上一篇文章中我們知道ArrayBlockingQueue通過ReentrantLock以及它的兩個condition來控制并發(fā):

final ReentrantLock lock;private final Condition notEmpty;private final Condition notFull;

lock = new ReentrantLock(fair);
notEmpty = lock.newCo
        
		

網(wǎng)友評論