1. 继承Thread类
2. 实现Runnable接口
3. 匿名类的方式
注: 启动线程是start()方法,run()并不能启动一个新的线程
package multiplethread;
import java.io.File;
public class TestThread {
public static void search(File file, String search) {
if (file.isFile()) {
if(file.getName().toLowerCase().endsWith(".jsp")){
//当找到.jsp文件的时候,就启动一个线程,进行专门的查找
new SearchFileThread(file,search).start();
}
}
if (file.isDirectory()) {
File[] fs = file.listFiles();
for (File f : fs) {
search(f, search);
}
}
}
public static void main(String[] args) {
File folder =new File("D:\\project");
search(folder,"include");
}
}
package multiplethread;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class SearchFileThread extends Thread{
private File file;
private String search;
public SearchFileThread(File file,String search) {
this.file = file;
this.search= search;
}
public void run(){
String fileContent = readFileConent(file);
if(fileContent.contains(search)){
System.out.printf("找到子目标字符串%s,在文件:%s%n",search,file);
}
}
public String readFileConent(File file){
try (FileReader fr = new FileReader(file)) {
char[] all = new char[(int) file.length()];
fr.read(all);
return new String(all);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
原文:https://www.cnblogs.com/tao7/p/12210364.html