Java 7 WatchService对其他人来说慢吗?

Java 7 WatchService对其他人来说慢吗?,java,nio,watchservice,Java,Nio,Watchservice,WatchService看起来是一项很好的技术,但它的速度太慢,在我测试过的OSX和Linux系统上没有用处。雪上加霜的是,它似乎也没有得到所有事件的通知 我自己的代码和Oracle的规范示例都是如此。() 我认识到OS X OpenJDK端口不确定此功能(请参阅) 有人在生产中成功地使用了它吗?JDK 7还没有针对MacOS的WatchService的本机实现。它不监听本机文件系统事件,而是使用fallback sun.nio.fs.PollingWatchService,它定期遍历文件系统并

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

我自己的代码和Oracle的规范示例都是如此。()

我认识到OS X OpenJDK端口不确定此功能(请参阅)


有人在生产中成功地使用了它吗?

JDK 7还没有针对MacOS的WatchService的本机实现。它不监听本机文件系统事件,而是使用fallback sun.nio.fs.PollingWatchService,它定期遍历文件系统并检查树中每个文件和子目录的最后修改时间戳。我还发现它的速度慢得令人无法忍受

Mac的WatchService有一个本机实现:


我自己还没有尝试过使用它。

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

folder.register(watcher, StandardWatchEventKinds.ENTRY_MODIFY);


请注意,StandardWatchEventTypes枚举位于com.sun.*packages.YES!这就是我的原因,在我使用它之前,我有4到5秒的延迟。作为参考,我创建的脚本在这里:对我来说也是一样,我有一个至少4秒的延迟,这使得它像在Linux或Windows上一样正常工作。非常感谢。
StandardWatchEventTypes
现在是
java.nio.file
包的一部分,尽管
SensitivityWatchEventModifier
仍在Sun私有包下。@Paul当然,但由于它是私有包,因此无法在不同的JVM实现中移植(例如IBM的).在JDK 8中,MacOS仍然是这样吗?@ben,显然是这样。我们仍然有问题,因为它非常慢,并且没有选择所有的事件。看起来JDK 9也不能解决这个问题。问题仍然存在,并且在过去的邮件列表讨论中没有解决方案:。警告!我们希望使用BarbaryWatchService,但发现它在HighSierra上的APFS上的行为与预期不符。我在项目上提出了一个问题。Java 13现在,有什么变化吗?自2012年以来,这是一个非常烦人的问题。问题表明“OS X和Linux”,但答案和注释似乎表明这只是OS X上的一个问题。
folder.register(watcher, new WatchEvent.Kind[]{StandardWatchEventKinds.ENTRY_MODIFY}, SensitivityWatchEventModifier.HIGH);