如何在Windows中正常中断阻塞等待?

我需要写一个执行阻塞I / O操作的JNI接口,而且我需要这些方法可以被中断。 例如:

interface IO { native void waitForEvents() throws InterruptedException, IOException; native int readBytes(byte[] data, int offset, int len) throws InterruptedException, IOException; } 

在Win32上,我使用windows API“waitForSingleObject(HADLE)”来实现“waitForEvents”,并使用“read(HANDLE)”来实现“readBytes”。

我怎样才能中断阻塞函数'waitForSingleObject'和'读'?

看起来您需要查看java.nio通道类,以了解如何执行非阻塞Java IO,而不是纠缠在JNI中。

要解除阻止呼叫,您可能希望另一个线程通知原线程阻塞的句柄。 也许为此目的创建另一个JNI调用。