我對每個文件數組的循環都有一個線程。對於每個文件都有一些常見的操作。有很多這樣的文件需要處理並且耗時。我在想如果Java線程可以幫助我實現更高的性能。我是java線程編程的新手。需要任何幫助從每個文件數組的循環中爲每個循環產生一個線程
回答
假設的FileReader類包含的邏輯處理單個文件
public class FileReader implements Runnable {
String fileName;
public FileReader(String fileName) {
this.fileName = fileName;
}
public void run() {
processFile(fileName);
}
private void processFile(String fileName) {
// Your logic of processing the file.
}
}
然後添加以下代碼來處理目錄中的文件
你應該總是使用一個線程池,以確保您使用系統資源典雅
private static final int THREAD_COUNT = 10;
private static final ThreadPoolExecutor pool = new ThreadPoolExecutor(
THREAD_COUNT, THREAD_COUNT, 10, TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>());
每個文件要處理
FileReader reader = new FileReader(file.getAbsolutePath());
pool.execute(reader);
這回答我的問題。謝謝。我將執行此操作併發布工作代碼 – VamsiKrishna 2012-08-08 06:16:26
這實際上取決於您必須爲每個文件做什麼,以及處理的瓶頸所在。如果你正在處理CPU限制(你必須對從文件讀取的數據進行大量計算),然後創建更多的線程,然後你有CPU內核來運行它們不會幫助你。另一方面,如果您的處理恰好是「將文件數據提交給服務器,等待響應」並且同時提交您的請求不會降低服務器速度,那麼爲每個文件設置一個線程可能會有所幫助。
不知道更多關於什麼處理涉及沒有一個真正的具體建議,可以給。
對文件的操作是文件讀寫操作。它讀取文件編輯文件並將其保存。 – VamsiKrishna 2012-08-07 18:26:03
我會建議做一些測試,找出可以同時運行多少個線程,然後管理所有線程的額外開銷最終會放慢你的速度,然後parall處理速度加快。 @byter建議的ThreadPoolExecutor類將是限制程序使用的線程數的好方法。 – 2012-08-07 19:27:57
@Joethanks您的輸入。雅線程池是我正在尋找.. – VamsiKrishna 2012-08-08 06:17:55
- 1. 每個循環的多個線程
- 2. VBA爲一個數組中的每個項目循環一個文件
- 3. 在一個循環從列表打印每個元素的每個循環
- 4. 循環內的PHP循環(每個循環的每次迭代)
- 5. jquery每個循環中的每個循環
- 6. 爲每個循環留下一個
- 7. 每個循環Haml?
- 8. 打開循環中的每個文件
- 9. PHP爲每個循環
- 10. 循環爲每個計劃
- 11. 爲每個循環異常
- 12. 爲每個循環遞增
- 13. 產生一個循環
- 14. 每個循環中的jQuery
- 15. groovy中的每個循環
- 16. 速度更快:將一個數組傳遞給一個類,併爲每個循環做一個循環,或者對每個循環做一個類
- 17. jQuery:每個循環奇數
- 18. jQuery循環。每個函數
- 19. 每個循環的數組索引C#
- 20. 追加數組爲一個循環的每個項目
- 21. 將每個循環更改爲for循環和while循環
- 22. 轉換while循環到每個循環
- 23. 對於每個循環---> For循環
- 24. 爲每個下一個循環爲下一個循環最高編號
- 25. 循環遍歷一個整數數組,每1000個循環打破
- 26. 爲每個循環分配X個線程爲1
- 27. 循環,從一個數組
- 28. 爲什麼一個嵌套在另一個每個循環的每個循環中蘭德不起作用
- 29. 向每個循環傳遞數組值
- 30. 跳過$。每個循環JSON數組值
你做了什麼研究?你有什麼嘗試?你讀過什麼文件? – Gray 2012-08-07 18:19:20
@gray我從我的手機問這個問題。我沒有我試過的代碼。我會盡可能更新問題。我已閱讀由oracle和一些網站提供的教程。 – VamsiKrishna 2012-08-07 18:22:43