Java 7 WatchService对其他任何人来说都很慢吗



WatchService看起来是一项很棒的技术,但速度太慢,在我测试过的OS X和Linux系统上无法使用。雪上加霜的是,它似乎也没有收到所有事件的通知。

我自己的代码和Oracle的规范示例都是这样。(http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/essential/io/examples/WatchDir.java)

我知道OS X OpenJDK端口不确定该功能(请参阅https://wikis.oracle.com/display/OpenJDK/Mac+OS+X+端口+项目+状态)

有人在生产中成功地使用过这个吗?

如果我更改,我的响应时间会更好

folder.register(watcher, StandardWatchEventKinds.ENTRY_MODIFY);

folder.register(watcher, new WatchEvent.Kind[]{StandardWatchEventKinds.ENTRY_MODIFY}, SensitivityWatchEventModifier.HIGH);
JDK7还没有针对MacOS的WatchService的本机实现。它不监听本机文件系统事件,而是使用回退sun.nio.fs.PollingWatchService,该服务定期遍历文件系统,并检查树中每个文件和子目录的最后修改时间戳。我也发现它非常慢。

有一个适用于Mac的WatchService的本地实现:

http://code.google.com/p/barbarywatchservice/

我自己还没试过用它。

相关内容

  • 没有找到相关文章

最新更新