哪個Java阻塞隊列最適合多個生產者和單個或多個消費者場景?哪個Java阻塞隊列最適合多個生產者和單個或多個消費者場景?
我使用LinkedBlockingQueue進行測試,但我得到OutOfMemoryError異常。
我正試圖實現以下目標。
- 生產者創建一個對象&放入隊列中。
- 消費者從隊列中抓取數據&插入到數據庫中。將有400家生產商,我可以根據需要調整消費者。
讓我知道任何想法。
更新
監製:應該聽服務器插槽。它從套接字&讀取數據構造對象(Domain對象)並放入一個隊列中。
消費:乘坐從隊列&刀片(支持的Hiberante &連接池)對象爲DB
這是我的真實環境。進程應該能夠處理至少200個記錄/秒。我正在測試過程的可伸縮性以及如何改進過程。我希望這會給出更好的想法。
幫助鏈接:
Monitoring and Managing Java SE 6 Platform Applications
+1我同意你的隊列似乎沒有明智的容量 - 默認是相當大的Integer.MAX_VALUE。如果您已將容量設置爲合理且仍然存在問題,請檢查您的Java堆設置-Xmx等...... – pjp 2009-08-07 09:48:51
感謝球員們,我無法實時減少生產者大小,因此我必須處理它。如果我使用這個提議,我會失去那個對象,不是嗎?我正在使用put()和take()。這將根據隊列狀態等待。我在eclipse運行配置中將-vmargs配置爲-Xms512m -Xmx1024m。 – nayakam 2009-08-10 09:36:31