这是来自FileWatcher java 7 nio库的代码片段。 它是非阻塞代码吗?这个线程等待来自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或在操作系统中。 –