我需要写一个执行阻塞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调用。