我将开发一个名为ExtractInfoFromUrl
的组件。此组件有一个名为addUrl(url)
的方法,它接受网址并打开给定的网址并从相应的网页中提取信息,完成后会引发一个事件。在内部,组件由管道和过滤器组成。
我有3个问题:
我想知道什么会更好 - 让每个Filter
都有Thread
(也就是说,在Java中,继承自Thread
)或者Pipe
有Threads
?
很明显,我必须让我的过滤器或带有螺纹的管道。但是,我也不会为我的组件本身使用Thread吗?我需要一个控制其他线程的线程,我相信主程序的线程不适合任务,但我不太清楚为什么。
是否有其他类型的PipedReaders / Writers Java实现允许我处理其他类型的数据而不是char / int?我会说,这对我来说有点太低了。例如,如果还有其他一些允许使用字符串的话,那就更好了。
由于
答案 0 :(得分:2)
首先,通常最好实现Runnable而不是扩展Thread,但不管怎么说,我不认为你想要让你的过滤器或管道扩展Thread或实现Runnable,而是让每个管道用于一个新的线程。
“组件”是什么意思?您是指可视化的GUI组件吗?或者不同的东西?
我在PrintWriter
答案 1 :(得分:1)
从概念上讲,过滤器代表过滤器和管道架构中的计算,因此我认为将线程与过滤器关联起来更有意义(如果根本使用线程)。管道是模式的“通信”部分。
同样,从概念上讲,如果从检索到的页面中提取的信息不依赖于任何其他数据,那么仅在多处理器情况下使用线程才有意义。我也不确定为什么需要一个主线程 - 也许你可以详细说明。
为什么不考虑消息队列,而不是使用低级读写器?