当前位置: 首页 > 后端技术 > PHP

一个简单的线程池实现大文件的多线程读取

时间:2023-03-29 15:37:33 PHP

上代码packageThreadLearning;importjava.io.*;importjava.util.ArrayList;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;/**@authorkyojurorengoku@date2022/1/20@Description*/publicclassLstFileAnalysis{staticStringfileUrl="";staticFilefile=newFile(fileUrl);staticInputStreamReaderisr;static{try{isr=newInputStreamReader(newFileInputStream(file));}catch(FileNotFoundExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args)throwsIOException{ExecutorServiceexecutorService=Executors.newFixedThreadPool(4);BufferedReaderread=newBufferedReader(isr);字符串行="";longl=System.currentTimeMillis();while((line=read.readLine())!=null){String[]split=line.split("\s+");如果(split.length==0){中断;}可运行任务=新任务(行);executorService.execute(任务);}经gl1=System.currentTimeMillis();System.out.println((l1-l));}}复制代码Task类提供了一个简单的思路:1.读取的数据经过处理后存入数据库【run方法中写的】packageThreadLearning;importjava.util.List;/**@authorkyojurorengoku@date2022/1/20@Description*/publicclassTaskimplementsRunnable{privateStringline;publicTask(Stringline){this.line=line;}@Overridepublicvoidrun(){//System.err.println(Thread.currentThread().getName()+""+line);}}最后,如果你觉得本文对你有帮助,给个赞或者可以加入我的开发交流群:1025263163互相学习,我们会有专业的技术解答。如果您觉得这篇文章对您有用,请给我们的开源项目一个小星星:http://github。crmeb.net/u/defu非常感谢!PHP学习手册:https://doc.crmeb.com技术交流论坛:https://q.crmeb.com