【发布时间】:2013-04-07 00:25:24
【问题描述】:
我正在为圣经编写一个文本搜索程序,我想使用线程来划分工作,以减少执行时间。我对 Java 编程比较熟悉,但对整个“线程”来说是全新的。基本上,该程序是拉出单独的圣经书籍,阅读文本,搜索单词,然后拉入下一本书。我想把它分开,以便 4-8 个线程同时在不同的书上工作。
有什么帮助吗?
public static void main(String args[]){
String wordToSearch = "";
String[] booksOfBible;
int bookPosition = 0;
ArrayList<String> finalList = new ArrayList<String>();
getWord gW = new getWord();
getBook gB = new getBook();
checkBook cB = new checkBook();
wordToSearch = gW.getWord(wordToSearch);
booksOfBible = gB.getFileList();
//System.out.println(wordToSearch);
for(int i = 0; i < booksOfBible.length; i++){
//System.out.println(booksOfBible[i]);//Test to see if books are in order
String[] verses = gB.getNextBook(booksOfBible, bookPosition);
//System.out.println(verses[0]);//Test to see if the books are being read properly
cB.checkForWord(wordToSearch, verses, booksOfBible[i], finalList);
bookPosition++;
}
for(int i = 0; i < finalList.size(); i++){
System.out.println(finalList.get(i));
}
System.out.println("Word found " + finalList.size() + " times");
}
【问题讨论】:
-
通过制作文本的“字典”可以实现更快的搜索。在这件事上抛出额外的线索不太可能有帮助。
-
“有什么帮助吗?” 有任何(具体)问题吗?
-
在深入研究多线程之前阅读一些教程是个好主意,例如this one。并行编程非常困难,单线程编程的经验并不能真正让你做好准备。
-
我和安德鲁一起做这个。使用更好的数据结构而不是额外的资源可以更好地解决一些问题。我认为这是其中之一;建立索引以避免进行暴力搜索。 如果,在构建高性能索引后,仍然需要它更快,那么并行可能会有所帮助。 (我怀疑它会有多大帮助;人们已经展示了对比圣经大得多的事物的极快搜索)。 [旁注:使用严格编码的机器代码对圣经大小的文本缓冲区进行暴力搜索可能会以每秒千兆字节的速度进行搜索;这还不够快?]
标签: java multithreading parallel-processing full-text-search