简单的线程池实现多线程对大文件的读取
作者:💥 玩命不玩心💥
- 2022 年 1 月 21 日
本文字数:973 字
阅读完需:约 3 分钟
上代码
package ThreadLearning;
import java.io.*;import java.util.ArrayList;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;
/** * @author kyojurorengoku * @date 2022/1/20 * @Description */public class LstFileAnalysis { static String fileUrl = ""; static File file = new File(fileUrl); static InputStreamReader isr;
static { try { isr = new InputStreamReader(new FileInputStream(file)); } catch (FileNotFoundException e) { e.printStackTrace(); } }
public static void main(String[] args) throws IOException { ExecutorService executorService = Executors.newFixedThreadPool(4); BufferedReader read = new BufferedReader(isr); String line = ""; long l = System.currentTimeMillis(); while ((line = read.readLine()) != null) { String[] split = line.split("\s+"); if (split.length == 0) { break; } Runnable task = new Task(line); executorService.execute(task); } long l1 = System.currentTimeMillis(); System.out.println((l1 - l)); }
}复制代码复制代码
Task 类 提供一个简单的思路: 1、读取出来的数据处理过后存入数据库[写在 run 方法里就行]
package ThreadLearning;
import java.util.List;
/** * @author kyojurorengoku * @date 2022/1/20 * @Description */public class Task implements Runnable {
private String line;
public Task(String line) { this.line = line; }
@Override public void run() {// System.err.println(Thread.currentThread().getName() + " " + line); }}复制代码
最后
如果你觉得此文对你有一丁点帮助,点个赞。或者可以加入我的开发交流群:1025263163 相互学习,我们会有专业的技术答疑解惑
如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点 star:http://github.crmeb.net/u/defu不胜感激 !
PHP 学习手册:https://doc.crmeb.com技术交流论坛:https://q.crmeb.com
划线
评论
复制
发布于: 刚刚阅读数: 2
💥 玩命不玩心💥
关注
还未添加个人签名 2021.11.02 加入
CRMEB就是客户关系管理+营销电商系统实现公众号端、微信小程序端、H5端、APP、PC端用户账号同步,能够快速积累客户、会员数据分析、智能转化客户、有效提高销售、会员维护、网络营销的一款企业应用











评论