2011-09-01 72 views
5

問題:讀取大小> 10 MB的文件,並使用Spring Batch將其加載到登臺表中。如何在讀取文件時保持狀態,以便在失敗時重新啓動作業?Spring批處理 - 如何在多個線程中讀取一個大文件?

根據文檔FileItemReader是不是線程安全的,如果我們嘗試使它線程安全,我們最終會失去可重啓性。所以基本的問題是:

  1. 有沒有辦法以塊讀取文件,每個線程知道哪個塊需要讀取?
  2. 如果我們使讀取同步,在這種情況下需要進行哪些更改才能使作業重新啓動?

如果有人遇到過類似的問題或者對它的表現有任何分析會幫助我們做出決定。

此外,任何指針或示例代碼表示讚賞。

+0

artbristol釘它。沒有理由爲您的讀者添加多線程功能,但這並不一定意味着您的處理器或作者不會從中受益。 – Floegipoky

回答

3

只有當你的線程同時做不同的事情時,多線程纔有用。例如,你可以有兩個線程在不同的CPU上運行。或者一個線程可以等待網絡消息,另一個線程正在繪製屏幕。

但在你的情況下,兩個線程都會等待來自同一設備的相同IO,所以沒有必要使用多個線程。

也看到這個問題Reading a file by multiple threads

+0

將並行分割讀取,處理和寫入不同線程不會提高性能嗎? – Ketan

+0

嗨@artbristol,我將我的單個XML分成多個XML,但仍然沒有得到預期的性能.. http://stackoverflow.com/questions/29166558/spring-batch-multi-file-resource-takes-same-time- as-single-thread可以請你提出建議嗎? – Ketan

相關問題