Jnotify是如何工作的

时间:2012-07-24 13:47:45

标签: java jnotify

我能够将Jnotify用于监听事件,如文件编辑,修改等。我关注的是Jnotify的工作原理。我的意思是它使用get事件。在资源使用的参考中使用是否安全。我读了另一个问题 - https://stackoverflow.com/questions/11100003/why-does-jnotify-consume-so-much-resources - 它耗费了大量资源。

我能解决问题的另一种方法是while循环直到条件然后程序关闭。

使用哪个会消耗更少的资源。

2 个答案:

答案 0 :(得分:5)

linnotify 与内核通信,以获得有关文件系统更改的通知。没有轮询,内核会通知订阅文件夹的更改。

jnotify 是围绕 libjnotify 的JNI包装器。

尽管如此,如果您使用的是Java 7,那么所有这些都是历史记录,取而代之的是新的Java文件I / O(NIO.2)包。

答案 1 :(得分:2)

来自site ...

  

JNotify Linux支持

     

JNotify Linux API是Linux INotify API的瘦包装器。以来   Linux INotify API不支持对目录进行递归侦听,   JNotify通过在每个上创建一个INotify监视来添加此功能   被监视目录下的子目录(透明地)。这个   进程需要一个与目录数量成线性关系的时间   树被递归观看,并需要系统资源,   即 - INotify手表,有限,默认为8192   每个流程都有手表。

记录了这些限制。还提供有关实施的想法。

您的问题与来自Apache公共区域的File changed listener in Java高度投票的答案有关DefaultFileMonitor。我建议你试一试。