這是來自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或在操作系統中。 –