在阅读关于SwingWorker的这个很好的例子时,我想在这里提出一个问题:
假设在文本文件中搜索单词的任务可以是多线程的,那么并行执行此任务的最佳方法是什么?在搜索每个文件时,我需要更新Swing组件(本例中为JTextarea)。此外,我需要在完成所有线程/任务时更新Component(JTextarea)。
对于那些不想阅读帖子的人:
简而言之,后台任务是搜索给定目录中存在的所有文本文件中的给定单词。按顺序执行搜索,一次读取一个文件。目标是并行搜索。
答案 0 :(得分:1)
首先证明该任务实际上是CPU绑定的,而不是I / O绑定的。换句话说,两个线程并行读取两个文件比一个线程连续读取两个文件更快吗?根据存储介质,文件的大小,磁盘上的物理位置以及许多其他内容,两个线程实际上可能会更慢。
答案 1 :(得分:1)
您可以使用此example中建议的方法:Supervisor
工作人员等待多个子工作线程共享的CountDownLatch
。