我有一個生產者/消費者用例,這是一個有點不尋常。 我有一些真正的世界用例,我希望他們能夠在不阻塞的情況下將對象添加到集合中。 消費者(只有一個)應該阻塞,直到集合中有一定數量的對象可用(例如500),然後大量消費它們。雖然少於500個,它應該阻止並等待收集填充。我不介意隊列超過這個值(700,1000等)很短的時間。生產者/消費者 - 生產者增加了數據收集不阻塞,從消費者的消費收集數據批量
我目前似乎還沒有找到一個解決方案來解決這個確切的問題。 我在考慮使用ConcurrentLinkedQueue並讓消費者定期檢查隊列是否有足夠的數據,但這似乎相當起反作用。
另一個想法是使用LinkedBlockingQueue。生產者不會阻塞(除非隊列已滿,這意味着它具有Integer.MAX_VALUE值 - 這不是我的情況,所以它都很好)。消費者將執行queue.take()並將元素添加到內部集合中。當內部收集達到500個元素時,它將批量使用它們。
您有任何提示嗎?
謝謝!
你爲什麼不決定生產批次?只是好奇什麼是最好的類似的用例。 – wikier