java - JNI - Java 在 native 线程完成执行之前退出

标签 java c++ multithreading winapi java-native-interface

我正处于用 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/

相关文章:

multithreading - "green threads"和 Erlang 的进程有什么区别?

multithreading - 如何在 Perl 中创建线程?

java - 调用继承类中的方法时出现问题

java - 当前作业完成后关闭 Quartz 调度程序

c++ - QDataStream 序列化指针

c++ - 在 Visual Studio 中加载文本文件资源比它应该加载的更多

c++ - 如何让协程始终在同一个线程中工作?

c++ - PostThreadMessage 将 GetLastError 设置为 1444

java - 如何在jsp中从我自己的应用程序播放视频文件(文件位于我自己的服务器Mysql数据库中。)

java - 将类 Unicode 字符串转换为真正的 Unicode 字符串的最短代码