java为什么TailerListener executor会将文件中的行打印两次?
我想跟踪一个文本文件,我想使用Executor实现这个目的,问题是每当我运行下面的代码时,我会打印每一行两次,一行一行地打印完整的文件,跳过最后一行,然后再次开始打印相同的行,我尝试使用线程而不是Executor,它在那里工作正常。 另外,它不会打印文本文件的最后一行
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);
}
}
我希望输出与写入文本文件的文本相同
这是Executor
的行为还是我遗漏了什么我不明白为什么这件事有那么大的问题
谢谢
# 1 楼答案
打印重复行是因为有两个线程监视并打印同一行:
Tailer.create(...)
创建的线程李>你可能想摆脱执行者,让
Thread.create
写一次您必须确保父线程不退出。一个简单的方法是
while(true){}