Java 为什么TailerListener executor会将文件中的行打印两次?
我想跟踪一个文本文件,我想使用Executor实现这个目的,问题是每当我运行以下代码时,我每行打印两次,我一行一行地打印完整的文件,跳过最后一行,然后再次开始打印相同的行,我尝试使用线程而不是Executor,它在那里工作正常。 加上它没有打印文本文件的最后一行Java 为什么TailerListener executor会将文件中的行打印两次?,java,file,executor,taillistener,Java,File,Executor,Taillistener,我想跟踪一个文本文件,我想使用Executor实现这个目的,问题是每当我运行以下代码时,我每行打印两次,我一行一行地打印完整的文件,跳过最后一行,然后再次开始打印相同的行,我尝试使用线程而不是Executor,它在那里工作正常。 加上它没有打印文本文件的最后一行 public static void helper() { TailerListener listener = new TailListener(); Tailer tailer = Tailer.create(n
public static void helper()
{
TailerListener listener = new TailListener();
Tailer tailer = Tailer.create(new File("E:\\terilium\\code\\productive-coder-si-bookstore-master\\kafka_runtime\\testing_files\\test.txt"),
listener, SLEEP);
Executor executor = new Executor()
{
public void execute(Runnable command)
{
command.run();
}
};
executor.execute(tailer);
} class TailListener extends TailerListenerAdapter
{
public void handle(String line)
{
System.out.println(line);
}
}
我希望输出与写入文本文件的文本相同
public static void helper()
{
TailerListener listener = new TailListener();
Tailer tailer = Tailer.create(new File("E:\\terilium\\code\\productive-coder-si-bookstore-master\\kafka_runtime\\testing_files\\test.txt"),
listener, SLEEP);
Executor executor = new Executor()
{
public void execute(Runnable command)
{
command.run();
}
};
executor.execute(tailer);
} class TailListener extends TailerListenerAdapter
{
public void handle(String line)
{
System.out.println(line);
}
}
这是执行者的行为还是我遗漏了什么我不明白为什么这件事会有那么大的问题
谢谢
打印重复行是因为有两个线程监视并打印同一行:
Tailer.create(…)
线程创建一次
您必须确保父线程不退出。一种简单的方法是while(true){}