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