简而言之,就是利用回调模式,在线程完成了操作之后调用主线程了监听方法。废话不说,上码:
监听接口,继承该类实现回调
/**
* @author ajwang
* 回调接口
*
*/
public interface DigestListener {
public void digestCalculated(List<String> list) throws IOException;
}
具体的线程类,读取文件
/**
* @author ajwang
*
*/
public class ListCallbackDigest implements Runnable {
private File inputFile;
private DigestListener digestListener;
public ListCallbackDigest(File inputFile, DigestListener digestListener) {
this.inputFile = inputFile;
this.digestListener=digestListener;
}
public void run() {
try {
BufferedReader br = new BufferedReader(new FileReader(inputFile));
List<String> result = new ArrayList<String>();
String temp="";
while((temp=br.readLine() )!= null){
result.add(temp);
}
//进行回调
digestListener.digestCalculated(result);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
继承监听接口,实现线程监听回调
/**
* @author ajwang
*
*/
public class ListCallbackDigestUser implements DigestListener {
private BufferedWriter bw;
private int counter;
private int current=0;
private long start;
public ListCallbackDigestUser(String outFIlePath) throws IOException {
this.bw = new BufferedWriter(new FileWriter(new File(outFIlePath)));
}
public synchronized void digestCalculated(List<String> list)
throws IOException {
for (String s : list) {
//System.out.println(s);
bw.write(s);
bw.newLine();
}
this.current++;
if(current>=counter){
bw.flush();
bw.close();
long end =System.nanoTime();
System.out.println("系统用时:"+(end-start));
}
}
public void process(String[] arr) {
start =System.nanoTime();
this.counter=arr.length;
for (int i = 0; i < arr.length; i++) {
File f = new File(arr[i]);
new Thread(new ListCallbackDigest(f, this)).start();
}
}
public static void main(String[] args) throws IOException {
ListCallbackDigestUser me = new ListCallbackDigestUser(
"/home/8888/Desktop/test/out.txt");
String arr[] = { "/home/ajwang/Desktop/test/xcopy.txt",
"/home/***8/Desktop/test/x.txt",
"/home/***8/Desktop/test/xb.txt",
"/home/****/Desktop/test/bf2.txt",
"/home/****/Desktop/test/bf2.txt" };
me.process(arr);
}
}
测试了一下,还不错:
- 大小: 6.7 KB
- 大小: 28.7 KB
分享到:
相关推荐
“t-io测试工具.rar”这个压缩包文件,便是为这些目的而设计的。它包含了用于生成测试数据的工具,以及进行各种测试操作的实用程序。在使用之前,我们需要先解压文件,然后根据提供的说明文档或代码示例,了解各个...
"TestIO"这个文件可能是该io测试软件的执行程序或者配置文件。在实际操作中,用户需要运行此文件来启动测试流程。根据具体情况,它可能包含设置参数、保存测试结果、生成测试报告等功能。 总的来说,"io测试软件"是...
本项目"Linux 文件IO编程-模拟登陆系统"旨在通过实践,让开发者深入理解如何利用C语言进行文件操作,并结合Linux图形库curses实现一个简单的用户交互界面。下面将详细介绍这个项目涉及的关键知识点。 1. 文件IO编程...
标题中的“stm32io测试程序”意味着这是一个专门用于测试STM32微控制器I/O口功能的代码项目。通常,这样的程序会涉及到GPIO(General Purpose Input/Output)寄存器的配置,包括设置I/O端口的方向(输入或输出)、...
KUKA机器人输入输出IO信号测试 KUKA机器人IO信号测试是非常重要的一项功能,在机器人进行I/O通讯时,需要监控I/O信号的状态,或者与外部进行输入、输出信号交互。下面是KUKA机器人IO信号测试的详细知识点: 一、在...
关于linux系统文件/dev/null和/dev/zero文件的详解和/dev/null、/dev/zero文件误删后的修复方法以及服务器磁盘IO测速详解,和一些常见/dev/null /dev/zero文件的用途用法示例说明
其中,Storage IO测试是Antutu的一个重要组成部分,主要用来衡量设备内部存储器的读写速度。这不仅能够帮助用户了解设备的存储性能,也为开发者提供了优化存储系统的依据。 #### 二、测试流程概览 Storage IO测试...
`io与nio性能测试.txt`文件可能包含了实际运行的性能测试结果,包括平均时间、吞吐量等指标。这种测试可能涉及多次运行,以减少偶然因素的影响。通常,NIO在处理大量数据或并发I/O操作时表现更好,因为它允许程序在...
本文将详细探讨LabVIEW文件I/O VI的开发和使用,以及如何通过提供的“第9章 文件IO”中的例程来学习和应用这些知识。 文件I/O在LabVIEW中通常涉及以下几类操作: 1. **文件打开(Open File)**:使用“打开文件”...
在这个配置中,`filename`指定了测试文件的位置,`iodepth`设置了队列深度,`rw`定义了I/O类型,`blocksize`是每个I/O操作的数据块大小,`size`是总的测试数据量。`job1`和`job2`定义了两个并行运行的任务,每个任务...
《威强电工业电脑IO测试程序C#版本详解》 在工业自动化领域,对设备的输入/输出(IO)功能进行测试是确保系统稳定运行的关键环节。本文将深入探讨威强电工业电脑的C#版IO测试程序,该程序基于底层DLL编写,旨在提供...
IOTest(1).exe很可能是这个IO卡测试工具的可执行文件,用户可以直接运行它来启动测试。在使用此工具时,首先要确保电脑与IO卡连接正确,然后通过软件配置IO点的地址和通讯协议。在测试过程中,可以实时查看IO信号的...
文件IO_day1.pdf 本资源摘要信息涵盖了文件IO的基本概念、Linux文件IO、赫夫曼树赫夫曼编码、静态库和动态库、文件I/O分类、Linux输出机制、文件操作函数等知识点。 1.赫夫曼树赫夫曼编码 赫夫曼树赫夫曼编码是一...
在CrystalDiskMark界面可以选择测试次数,测试文件大小和测试对象,点击下面一排按钮就可以进行单个文件读写或者512kb、4kb的多个小文件读写测试。其实这类软件对硬盘没什么意思,我留在电脑里面是测试优盘的速度用...
实验测试和详细教程。
标题中的“倍福CX20X0带500个IO测试”指的是使用倍福(Beckhoff)CX20X0系列控制器进行的一项测试,该控制器具备500个输入/输出(I/O)点。在工业自动化领域,I/O点是用于连接设备和系统以实现数据交换的关键部分。...
本文将深入探讨“基于重叠IO机制的网络通讯类CNet”,并结合提供的文件“TestNetComm”来解析这一技术。 首先,我们要理解什么是重叠IO(Overlapped I/O)。在Windows系统中,重叠IO是一种异步I/O模型,它允许数据...
《文件IO操作开发笔记(一):使用Qt的QFile对磁盘文件存储进行性能测试以及测试工具》 https://hpzwl.blog.csdn.net/article/details/128438303 在做到个别项目对日志要求较高,要求并行写入的数据较多,尽管写入...