我正处于用 C++ 开发 API 的早期阶段,我正在使用 JNI 将其包装在 Java 中。 native 代码使用 WinAPI 创建一个套接字监听器线程,该线程应无限期运行,从而使程序无限期地保持打开状态(经过测试并且工作正常)。
但是,当我尝试在 Java 中调用此代码时,JVM 仍然在到达 main 的末尾时终止,忽略正在运行的线程。一些研究暗示 Java 可能认为线程是守护进程而不是“用户线程”。但如果是这样的话,那么我就不太清楚如何让 Java 相信它实际上是一个用户线程。
有人知道这件事吗?
最佳答案
您需要为所有 native 线程调用 AttachCurrentThread()
,以确保 Java 知道它们,因此它将等待它们完成。
关于java - JNI - Java 在 native 线程完成执行之前退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36783116/