これは、FileWatcher java 7 nio libraryのコードスニペットです。 非ブロックコードですか?このスレッドはFileSystemからの信号を待ちます。FilewatcherはJavaのIOを非ブロックと見なしますか?
for (;;) {
// wait for key to be signaled
WatchKey key;
try {
key = watcher.take();
} catch (InterruptedException x) {
return;
}
}
あなたが懸念しているプロセスとは別のスレッドで実行されている場合、それは他のコードに対して非ブロッキングです。スレッド内のコードのサンプルは非ブロックではありません –
@ cricket_007:これはノンブロッキングの意味ではありません。それはIOとは関係ありません。 – SLaks
ここでは、非ブロックとは、I/Oを開始したユーザースレッドが、I/Oが完了するまで一時停止しないことを意味します。いくつかの下位レベルでは、I/O割り込みを処理し、現在保留中の要求のテーブルに基づいてそれらと何をするべきかを把握するスレッドを作成します。そのスレッドは、現在の割り込みをすべて処理した後、次のI/O割り込みまでブロックします。しかし、あなたはそのスレッドにアクセスできない、それはユーザーコードとは無関係です。 NIOがどのように実装されているかに応じて、そのスレッドはJavaまたはオペレーティングシステムになる可能性があります。 –