我正在使用Java 6,不能使用Watch Service。我正在寻找一种替代投票的方法。那么JNotify与轮询有什么不同呢?或者JNotify使用轮询吗?
JNotify使用本机操作系统对文件系统通知的支持。在Linux上,它使用INotify(这是它的名字的灵感),在Windows上,它使用ReadDirectoryChangesW,在Mac上,它使用ffindstream API。我在2005年左右开始使用JNotify,那时JVM还没有支持文件系统通知。现在推荐的方法是使用JVM支持,但如果不能依赖JVM也是一个不错的选择。
要记住的一件事是,JNotify使用的是操作系统支持,这有时不是很好。在某些情况下,文件系统事件被操作系统丢弃,您对此无能为力。