有关管道和过滤器实施的一些问题

时间:2010-11-28 13:23:21

标签: java multithreading filter pipe

我将开发一个名为ExtractInfoFromUrl的组件。此组件有一个名为addUrl(url)的方法,它接受网址并打开给定的网址并从相应的网页中提取信息,完成后会引发一个事件。在内部,组件由管道和过滤器组成。

我有3个问题:

  1. 我想知道什么会更好 - 让每个Filter都有Thread(也就是说,在Java中,继承自Thread)或者PipeThreads

  2. 很明显,我必须让我的过滤器或带有螺纹的管道。但是,我也不会为我的组件本身使用Thread吗?我需要一个控制其他线程的线程,我相信主程序的线程不适合任务,但我不太清楚为什么。

  3. 是否有其他类型的PipedReaders / Writers Java实现允许我处理其他类型的数据而不是char / int?我会说,这对我来说有点太低了。例如,如果还有其他一些允许使用字符串的话,那就更好了。

  4. 由于

2 个答案:

答案 0 :(得分:2)

  1. 首先,通常最好实现Runnable而不是扩展Thread,但不管怎么说,我不认为你想要让你的过滤器或管道扩展Thread或实现Runnable,而是让每个管道用于一个新的线程。

  2. “组件”是什么意思?您是指可视化的GUI组件吗?或者不同的东西?

  3. 我在PrintWriter

  4. 中包装了PipedWriters

答案 1 :(得分:1)

从概念上讲,过滤器代表过滤器和管道架构中的计算,因此我认为将线程与过滤器关联起来更有意义(如果根本使用线程)。管道是模式的“通信”部分。

同样,从概念上讲,如果从检索到的页面中提取的信息不依赖于任何其他数据,那么仅在多处理器情况下使用线程才有意义。我也不确定为什么需要一个主线程 - 也许你可以详细说明。

为什么不考虑消息队列,而不是使用低级读写器?