2010-11-28 8 views
2

ExtractInfoFromUrlというコンポーネントを開発しようとしています。このコンポーネントにはaddUrl(url)というメソッドがあり、URLを受け取り、指定されたURLを開き、対応するページから情報を抽出し、完了するとイベントを発生させます。内部的には、コンポーネントはパイプとフィルタで構成されています。各FilterThread(つまりJavaで、Threadから継承する、である)、または持ってPipeを持っている持っている - 私は良いだろう何を知りたいのですパイプとフィルターの実装に関するいくつかの質問

  1. 私は3つの質問を持っていますsはThreadsですか?

  2. 私のフィルタやスレッドをスレッドで持たなければならないことは明らかです。しかし、コンポーネント自体にスレッドを使用することもできませんか?私は他のものを制御するスレッドが必要で、メインプログラムのスレッドはタスクには適していないと私は信じていますが、その理由はあまりわかりません。

  3. PipedReader/WriterのJava実装でchar/intではなく他の種類のデータを処理できることはありますか?それは私にとってはあまりにも低いレベルです、私は言うでしょう。代わりに文字列を許可するものがあれば、それが望ましいでしょう。

1については

答えて

2
  1. おかげで、それはRunnableを実装するのではなく、スレッドを拡張するために、通常は望ましいですが、かかわらず、私はあなたのフィルタやパイプのスレッドを拡張したいだろうとは思いませんまたはRunnableを実装するのではなく、新しいスレッドで各パイプを使用するようにしてください。

  2. 「コンポーネント」とはどういう意味ですか?視覚化されたGUIコンポーネントを意味しますか?それとも別の何か?

  3. 私は概念的のPrintWriter

1

でPipedWritersを包みました、フィルターは、フィルターとパイプアーキテクチャの計算を表すので、私はスレッドがフィルターに関連付けされることがより理にかなっていると思うだろう(スレッドがまったく使用されている場合)。パイプはパターンの「通信」部分です。

また、概念的には、検索されたページから抽出された情報が他のデータに依存しない場合、スレッドを使用することはマルチプロセッサの場合にのみ意味があります。私はまた、なぜマスタースレッドの必要性があるのか​​分かりません。おそらくあなたは精巧にすることができます。

低レベルのリーダー/ライターを使用する代わりに、メッセージキューを検討してみてはいかがですか?

関連する問題