2010-11-28 56 views
2

我將開發一個名爲ExtractInfoFromUrl的組件。該組件有一個名爲addUrl(url)的方法,它接受url並打開給定的url並從相應頁面提取信息,完成後引發一個事件。在內部,組件由管道和過濾器組成。有關管道和過濾器實施的一些問題

我有3個問題:

  1. 我想知道什麼會更好 - 讓每個FilterThread(即在Java中,從Thread繼承)或有Pipe s有Threads

  2. 很明顯,我將不得不有我的過濾器或我的管道與線程。但是我也不會爲我的組件本身使用線程嗎?我需要一個線程來控制其他的線程,我相信主程序的線程不適合這個任務,但我不太清楚爲什麼。

  3. 是否有任何其他類型的PipedReaders/Writers的Java實現允許我處理其他類型的數據而不是char/int?我認爲這對我來說太低了一點。例如,如果還有其他的字符串可以允許字符串,那麼它會更好。

感謝

回答

2
  1. 原因之一,它通常是最好實現Runnable接口,而不是延長線,但無論如何,我不認爲你會希望你的過濾器或管道擴展Thread或實現Runnable,而是讓每個管道用於新的線程中。

  2. 你是什麼意思的「組件」?你的意思是一個可視化的GUI組件?或者有些不同?

  3. 我裹在PipedWriters的PrintWriter

1

概念,過濾器代表的過濾器和管道結構的計算,所以,我覺得它更有意義的螺紋與過濾器相關聯(如果使用線程)。管道是模式的「溝通」部分。

同樣,從概念上講,如果從檢索到的頁面中提取的信息不依賴於任何其他數據,那麼使用它們的線程只有在多處理器的情況下才有意義。我也不確定爲什麼需要一個主線程 - 也許你可以詳細說明。

爲什麼不考慮消息隊列,而不是使用底層的讀寫器呢?