java - 使用 JNA native 等待调用检测线程中断 (Windows)

标签 java windows multithreading jna

我正在尝试编写一些通过 JNA 执行等待的代码(例如,通过调用 Kernel32 函数 WaitForSingleObject),但我也希望在调用 Thread.interrupt() 时等待完成;我假设 Java 使用类似 Event 对象的东西来实现中断;有什么方法可以从 Java 获取事件以便在调用 WaitForMultipleObjects 时使用它?或者,如果线程中断,我是否可以通过其他方式安排等待完成?

最佳答案

Java 通过 NIO 支持它,很少有人知道,有问题的类是抽象的,但这不是问题:

java.nio.channels.spi.AbstractInterruptibleChannel。它有 3 个有趣的方法:begin()end(),它们是 final方法,另外还有一个您必须实现的方法:“protected abstract void implCloseChannel() throws IOException “ 该方法将从调用 interrupt() 的线程中调用,所以要小心。

使用非常简单:在输入 native 代码之前调用 begin,在返回时调用 end()。处理 implCloseChannel 中的中断。

编码愉快!

关于java - 使用 JNA native 等待调用检测线程中断 (Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7889161/

相关文章:

c - Windows 中的语言环境列表

c++ - 如何检测错误共享会降低性能?

java - 棋盘不让棋子移动

java - 带有证书 : how to set client certificate and key? 的 Nifi 和 Postgresql

ruby-on-rails - 从SQLite迁移后,为什么我的应用程序不能修改开发postgresql数据库?

windows - Windows XP 和 GetTickCount64 上的 Qt 应用程序

c# - 在共享数据结构上同步

c - 如何使用 CreateThread() 创建多个线程,每个线程具有不同的 ThreadProc() 函数

java - 将数据从 edittext 发送到 listview

java - Spring 和 AMQP RabbitMQ 主题交换不起作用