因此,我在生產者/消費者類型應用程序中使用了固定大小的BlockingQueue [ArrayBlockingQueue],但我希望用戶能夠隨時更改隊列大小。問題是沒有一個BlockingQueue實現允許在創建後更改容量。有人曾經遇到過這個?有任何想法嗎?Re-sizeable Java BlockingQueue
5
A
回答
1
您可以擴展LinkedBlockingQueue。它的限制是一個軟限制(即只是一個額外的檢查),你可以使這個東西你可以改變(通過禁用內置的一個並把你自己的)
2
最明顯的解決方案(可能或可能不是根據您的具體情況而定)應該是簡單地實例化一個新的隊列,其中包含所需的更新容量。然後將舊隊列中的所有內容都推送到新隊列中。
+0
如果這樣做,那麼所有具有對舊隊列的引用的線程都將被阻塞,以等待舊隊列上的新內容而不是新隊列上的新內容。 –
+1
@bkail:這就是爲什麼我說「取決於你的情況。」如果OP有大量的阻塞隊列引用,那麼他需要重構這個解決方案(例如,通過將隊列本身包裝在一個容器對象中,該容器對象在外部充當隊列,但在容量爲改變)。 –
相關問題
- 1. Java NIO Pipe vs BlockingQueue
- 2. Howto Extjs Resizeable列
- 3. Java BlockingQueue與批處理?
- 4. BlockingQueue內部交易java
- 5. 觸發SheduledExecutor與blockingQueue Java
- 6. Go頻道vs Java BlockingQueue
- 7. C++等價於Java的BlockingQueue
- 8. jQuery Resizeable不起作用?
- 9. JavaFX tableview resizeable and unresizeable列
- 10. jquery實時更新resizeable()
- 11. 與BlockingQueue的
- 12. Observer - BlockingQueue
- 13. Java的BlockingQueue的設計問題
- 14. java BlockingQueue和JDBC批量更新
- 15. while循環在Java中的BlockingQueue實現
- 16. Java - 等待多個BlockingQueue的並行
- 17. java BlockingQueue沒有阻止偷看?
- 18. 的Java -BlockingQueue - 多生產,單次消費
- 19. Java靜態同步vs BlockingQueue實現
- 20. RabbitMQ到BlockingQueue綁定
- 21. 使用BlockingQueue的
- 22. BlockingQueue vs Semaphore
- 23. Android Looper vs BlockingQueue?
- 24. BlockingQueue Behavior for Multiple Request
- 25. resizeable div類似於jsfiddle或瀏覽器
- 26. 如何中斷BlockingQueue?
- 27. BlockingQueue資源消耗
- 28. BlockingQueue使用ReentrantLock實現
- 29. 如何處理BlockingQueue的InterruptedException?
- 30. BlockingQueue程序不會退出
這是不可能的,沒有複製/粘貼很多內部代碼。你真的不得不把電鋸拿到一個單獨的實現中,例如Apache Harmony中的那個。 – jbellis
@jbellis你爲什麼需要將代碼複製到子類中呢? –
您無法通過繼承獲得所需的功能;最後/私人太多了。 – jbellis