如何将Java多线程处理多个文件存储优化为长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计273个文字,预计阅读时间需要2分钟。
java/** * 处理文件列表 * @param segments 文件列表,包含文件路径和文件名 */public void dealFile(List segments) { if (segments==null || segments.isEmpty()) { return; } // 子线程计数器 int threadCount=0; for (String segment : segments) { // 启动子线程处理每个文件 new Thread(() -> { threadCount++; System.out.println(处理文件: + segment); // 模拟文件处理 try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(文件: + segment + 处理完成); }).start(); } System.out.println(总子线程数: + threadCount);}
//传入参数是文件列表 FileList 里面包含文件路径文件名
public void dealFile( List<FileList> segments) {
try {
if (null == segments || segments.isEmpty()) {
return;
}
//子线程计数器 参数是子线程个数及分段数
final CountDownLatch cdl = new CountDownLatch(segments.size());
segments.stream().filter(Objects::nonNull).forEach((v) -> {
//开启子线程并发解析入库文件
new Thread(()->{
log.debug(Thread.currentThread().getName());
try{
//读取文件方法
List<List<Data>> list = readFile(v);
if (!FileUtils.isEmpty(list) && !FileUtils.isEmpty((Collection)list.get(0))) {
//插入数据方法
insertFileData(list);
}
}finally {
cdl.countDown();
}
}).start();
});
//等待子线程全部处理完成继续主线程
cdl.await();
} catch (Exception e) {
throw new Exception(e);
}
}
本文共计273个文字,预计阅读时间需要2分钟。
java/** * 处理文件列表 * @param segments 文件列表,包含文件路径和文件名 */public void dealFile(List segments) { if (segments==null || segments.isEmpty()) { return; } // 子线程计数器 int threadCount=0; for (String segment : segments) { // 启动子线程处理每个文件 new Thread(() -> { threadCount++; System.out.println(处理文件: + segment); // 模拟文件处理 try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(文件: + segment + 处理完成); }).start(); } System.out.println(总子线程数: + threadCount);}
//传入参数是文件列表 FileList 里面包含文件路径文件名
public void dealFile( List<FileList> segments) {
try {
if (null == segments || segments.isEmpty()) {
return;
}
//子线程计数器 参数是子线程个数及分段数
final CountDownLatch cdl = new CountDownLatch(segments.size());
segments.stream().filter(Objects::nonNull).forEach((v) -> {
//开启子线程并发解析入库文件
new Thread(()->{
log.debug(Thread.currentThread().getName());
try{
//读取文件方法
List<List<Data>> list = readFile(v);
if (!FileUtils.isEmpty(list) && !FileUtils.isEmpty((Collection)list.get(0))) {
//插入数据方法
insertFileData(list);
}
}finally {
cdl.countDown();
}
}).start();
});
//等待子线程全部处理完成继续主线程
cdl.await();
} catch (Exception e) {
throw new Exception(e);
}
}

