2014-02-21 24 views
-1

我想創建一個FileProcessor,它將按順序讀取文件。這個類將被多個線程訪問,並且每個線程將在處理該行後讀取該行並將其存儲在數據結構中。到目前爲止,我已經想象到解決設計問題,因爲這步驟:如何將文本文件中的行傳遞給java中的不同線程

  1. 類FileProcessor與任務:一種方法函數getline將打開文件。 BufferedReader將讀取每一行並返回該行。

  2. 實現可運行的第二類FileThread。在FileProcessor對象上的run方法調用getline()。這個線程也會處理該行並將其存儲在數據結構中。

  3. 第三類將創建多個FileThreads線程。

我知道這個設計有我能想象的缺點。

  1. 每個線程如何知道EOF是否到達以便它們停止。
  2. 在FileProcessor中,我應該使用while循環檢測EOF來正常讀取文件,或者只是一行一行地讀取並且有threa照顧EOF條件。

請幫忙。

+0

你做了什麼? –

+0

我想知道我計劃的設計是好還是有問題。 –

+0

請具體說明一種編程語言,而不是英語語言。很難想象你想要做什麼。 – Lion

回答

1

不,設計不好。

實例化Executor池的類讀取文件並執行工作是唯一需要了解EOF的類。採取他們的部分和做工作的線程不必知道。

請勿使用原始線程;利用像Excecutor這樣的新併發類。

+0

我實現了線程之間的同步,通過共享讀取創建單個緩衝區讀取器類實例的方法。 –

相關問題