只是关于上述主题的一个快速问题。基本上,我正在编写一个从网络捕获数据并将其写入外部文件以进行进一步处理的软件。
我想知道的是最好使用什么代码来获得这种预期的效果。
谢谢你的时间
大卫
只是关于上述主题的一个快速问题。基本上,我正在编写一个从网络捕获数据并将其写入外部文件以进行进一步处理的软件。
我想知道的是最好使用什么代码来获得这种预期的效果。
谢谢你的时间
大卫
您可以使用Executor
框架,这是一个示例实现:
final List<String> myData = new ArrayList<String>();
final File f = new File("some/file.txt");
final Runnable saveListToFileJob = new Runnable(){
@Override
public void run(){ /* this uses Guava */
try{
Files.write(
Joiner.on('\n').join(myData),
f, Charsets.UTF_8);
} catch(final IOException e){
throw new IllegalStateException(e);
}
}
};
Executors
.newScheduledThreadPool(1) /* one thread should be enough */
.scheduleAtFixedRate(saveListToFileJob,
1000 * 60 /* 1 minute initial delay */,
1, TimeUnit.MINUTES /* run once every minute */);
这个问题可能需要更多细节。解决方案的哪一部分给您带来了麻烦?
您还应该更详细地描述问题域,因为它可能会显着影响可能提供的任何解决方案。例如:
只是我最初的预感——在为您描述的问题设计解决方案时,我会有一些想法涉及某种生产者-消费者方法。
我可能完全没有根据,但是您从网络上阅读的事实意味着某种不可预测性和不可靠性。因此,我不依赖计时器,而是依赖数据的生产者(从网络读取的对象)向消费者(将使用从网络读取的数据的对象)发出信号来处理数据。