該任務是 - 需要處理多個I/O流(HTTP下載),並執行一些CPU繁重的操作。理想情況下想要使用全帶寬和CPU 100%。當然,重要的CPU處理速度比網絡下載要慢。未處理的數據可以緩存到磁盤。 ASF中是否有任何現有的Executors或其他組件提供此功能?如果沒有 - 實現這一目標的最佳方法是什麼?考慮有2個線程池用於Internet-To-Disk
和其他用於Disk-To-CPU-To-Disk
操作。針對I/O綁定和CPU繁忙操作的Java線程同步
編輯:
我會澄清我的問題:
2線程池:Internet-To-Disk
和Disk-To-CPU-To-Disk
是生產者/消費者的做法本身。問題是如何確保我爲producers
和consumers
選擇了正確的線程數?相同的代碼將在不同的盒子,不同數量的核心和不同帶寬的拱門上同步工作。如何確保我選擇了正確的線程數量,以便消耗100%的帶寬和100%的CPU?
好了,這個想法是加載帶寬和CPU儘可能的(這不是一個問題,即幾個工作周後(數以億計的HTML頁面應該被下載)下載將停止,只有CPU的處理將繼續基本上 - 問題導致 - 如何平衡兩個池(或生產者/消費者)完全加載100%的系統。如何自動找到該餘額的正確數量的線程? – Archer 2010-12-17 19:04:24