Java JNA:对所有回调使用一个线程

Java JNA:对所有回调使用一个线程,java,jna,Java,Jna,有一种情况是,我将JNA与一些带有回调的本机代码一起使用,我注意到,对于每个回调,本机代码的主线程都会生成一个新的java线程来处理回调。JNA有没有办法指定哪个线程处理回调,这样我就可以在同一个线程上获得它们?目前,我每隔几秒钟就会收到数千个新线程,这是一个相当大的资源消耗。经过大量挖掘,我找到了正确的答案。我创建了CallbackThreadIninitilizer,并使用Native.addCallbackThreadIninitilizer方法将其与每个回调关联。这使他们都在同一条线上。

有一种情况是,我将JNA与一些带有回调的本机代码一起使用,我注意到,对于每个回调,本机代码的主线程都会生成一个新的java线程来处理回调。JNA有没有办法指定哪个线程处理回调,这样我就可以在同一个线程上获得它们?目前,我每隔几秒钟就会收到数千个新线程,这是一个相当大的资源消耗。

经过大量挖掘,我找到了正确的答案。我创建了CallbackThreadIninitilizer,并使用Native.addCallbackThreadIninitilizer方法将其与每个回调关联。这使他们都在同一条线上。如果您有一个已完成的回调,或者您发送了某种标志以指示此回调是最后一个可以调用Native.detatch(true)的回调,则在这种情况下,您可以分离线程并让gc清理它。如果你不这样做,它似乎会停留一段时间,有时会做出新的,关闭旧的。我从未见过它一次保存超过3个