2

ファイルの作成や変更などのイベントのリスニングに使用できJnotifyます。私の懸念は、Jnotifyがどのように機能するかです。私はそれがgetイベントを使用することを意味します。リソースの使用を参照して使用しても安全ですか。私は別のSOの質問(https://stackoverflow.com/questions/11100003/why-does-jnotify-consume-so-much-resources)で、多くのリソースを消費していることを読みました。

問題を解決するもう1つの方法は、条件が発生するまでwhileループを実行してから、プログラムをシャットダウンすることです。

どちらを使用するのが良いかは、より少ないリソースを消費します。

4

2 に答える 2

5

linnotifyはカーネルと通信して、ファイルシステムの変更の通知を受け取ります。ポーリングは行われず、カーネルはサブスクライブされたフォルダーへの変更を通知します。

jnotifyは、 libjnotifyのJNIラッパーです。

それでも、Java 7を使用している場合は、すべてが履歴であり、新しいJavaファイルI / O(NIO.2)パッケージに置き換えられます。

于 2012-07-24T13:58:40.150 に答える
2

サイトから...

JNotifyLinuxサポート

JNotify Linux APIは、LinuxINotifyAPIの薄いラッパーです。Linux INotify APIはディレクトリでの再帰的なリスニングをサポートしていないため、JNotifyは、監視対象ディレクトリの下のすべてのサブディレクトリに(透過的に)INotify監視を作成することでこの機能を追加します。このプロセスには、再帰的に監視されるツリー内のディレクトリの数に比例する時間がかかり、システムリソースが必要です。つまり、INotifyウォッチは、デフォルトでプロセスごとに8192ウォッチに制限されています。

制限は文書化されています。また、実装についてのアイデアを提供します。

あなたの問題はJavaのファイル変更リスナーに関連しています。ApachecommonsのDefaultFileMonitorが非常に投票された答えです。ぜひお試しください。

于 2012-07-24T14:01:54.837 に答える