gpt4 book ai didi

java - java中无法同时读取两个文件

转载 作者:行者123 更新时间:2023-12-01 16:36:05 24 4
gpt4 key购买 nike

任何人都可以给我通过线程同时读取两个文件的工作示例吗?以及一次阅读它们的最佳方式是什么。

public static void main(String args[]) {

new Runnable(new File("D:/test1.log"),"thread1");
new Runnable(new File("D:/test2.log"),"thread2");
}

private static class Runnable implements Runnable {
private File logFilePath;
Thread runner;
// you should inject the file path of the log file to watch
public Runnable(File logFilePath,String threadName) {
this.logFilePath = logFilePath;
runner = new Thread(this, threadName);
runner.start();
}
_____READ LOGIC HERE____

}

生成日志的程序。我没有使用任何关闭或刷新。

public final class Slf4jSample {
static Logger logger = LoggerFactory.getLogger(Slf4jSample.class);
static int i=0;

public static void main(final String[] args) {

int delay = 0; // delay for 5 sec.


int period = 10000; // repeat every sec.
Timer timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
// Task here ...
logger.error("error"+i);
logger.warn("warn"+i);
logger.debug("debug"+i);
try{int i=0/0;
}catch(Exception e){
logger.error("Ecxeption"+i, e);
}

i++;




}
}, delay, period);
}
}

最佳答案

从简短的描述中我不太确定你的目的是什么,但我只是想警告你,从单个硬盘并行读取文件通常不是一个好主意,因为机械磁盘头需要寻道下一个读取位置,因此使用多个线程读取将导致它不断跳动并减慢速度而不是加快速度。

如果您想读取部分文件并并行处理它们,我建议您查看单个生产者(顺序读取文件)多个消费者(处理文件)解决方案。

编辑:如果您坚持使用多个阅读器,您可能应该像这样更改代码:

public static void main(String args[]) {

new Thread(new ThreadTask(new File("D:/test1.log")),"thread1").start();
new Thread(new ThreadTask(new File("D:/test2.log")),"thread2").start();
}

private static class ThreadTask implements Runnable {
private File logFilePath;

// you should inject the file path of the log file to watch
public ThreadTask(File logFilePath) {
this.logFilePath = logFilePath;
}

public void run() {
// read file
}
}

关于java - java中无法同时读取两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8940745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com