importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.Scanner;importjava.util.concurrent.LinkedBlockingQueue;importjava.util.concurrent.ThreadPoolExecutor;importjava.util.concurrent.TimeUnit;public class TestThread2 implementsRunnable{private inttaskNum;privateString keyWords;public TestThread2(inttaskNum, String keyWords){this.taskNum =taskNum;this.keyWords =keyWords;
}public static voidmain(String[] args){
String searchedFilePath= "G:/Document/HongDaXingYe/SearchedDir/searchedFile.txt";
File searchedFile= newFile(searchedFilePath);
FileOutputStream fos= null;try{
fos= newFileOutputStream(searchedFile);if(!searchedFile.exists()){
searchedFile.createNewFile();
}
Test3.fos=fos;
}catch(Exception e){
e.printStackTrace();
}
Scanner input= newScanner(System.in);
System.out.println("请输入需要搜索的关键字(如果有多个,用英文半角逗号隔开):");
String keyWordsStr=input.next();
String[] keyWordsArr= null;if(keyWordsStr.indexOf(",") > 0){
keyWordsArr= keyWordsStr.split(",");
}else{
keyWordsArr= newString[]{ keyWordsStr };
}
input.close();
LinkedBlockingQueue workQueue = new LinkedBlockingQueue();
ThreadPoolExecutor executor= new ThreadPoolExecutor(3, 100, 3600, TimeUnit.SECONDS, workQueue);for(int i = 0; i < keyWordsArr.length; i++){
String keyWords=keyWordsArr[i];
TestThread testThread= newTestThread(i, keyWords);
executor.execute(testThread);
}if(executor.isTerminated() && Test3.fos != null){try{
Test3.fos.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
@Overridepublic voidrun() {
System.out.println("正在执行task " +taskNum);
System.out.println("当前关键字:" +keyWords);
Test3 test3= newTest3(keyWords);
test3.search();
System.out.println("task " + taskNum + "执行完毕");
}
}