我正在忙着编写一个使用java.nio.file.WatchService
。
watchKey = watchService.take();
for (WatchEvent<?> event : watchKey.pollEvents()) {
// Handle the events
}
watchKey.reset();
对事件进行轮询和正确处理。
问题出现在我下次致电watchService.take()
在处理事件期间发生了更多事件,因此第一个事件的类型为StandardWatchEventKinds.OVERFLOW
。
如何抓住这些事件或阻止事件丢失? 重要的是我不要放弃任何事件。
答案 0 :(得分:1)
可能的解决方案是在一个线程中获取事件,但在另一个线程中处理它们。例如,您可以使用Executor
获得的Executors.newSingleThreadExecutor
并向其发送事件处理任务。
答案 1 :(得分:0)
从watchService创建了一个由10个消费者组成的池。这样就不会丢失任何事件。