我試圖根據this發佈來擴展Java中的無鎖隊列的實現。Java中的無鎖定和大小限制隊列
對於我的實現,我僅限於使用原子變量/引用。 另外,我的隊列應該有一個最大尺寸。 因此,putObject()應該在隊列滿時阻塞,如果隊列爲空,則應該阻塞getObject()。
目前我不知道如何解決這個問題,而不使用鎖。
例如,當使用AtomicInteger時,修改操作將是原子操作。 但是仍然存在一個問題,我必須處理putObject()和getObject()中的檢查和修改情況嗎? 因此,在檢查當前隊列大小之後,排隊線程會中斷的情況仍然存在。
我現在的問題是,如果這個問題可以解決我目前的限制嗎?
電賀
當隊列滿(空)時會發生Disruptor塊嗎? –
@Alexei AFAIK,它採用了阻擋,旋轉,停車,屈服等多種「等待策略」,直到滿足條件。 – CaptainHastings