Tengo un hilo nativo que necesita llamar a Java. Para eso, necesito adjuntar el hilo a la VM usando AttachCurrentThread
. Como esta devolución de llamada ocurrirá con bastante frecuencia, el hilo probablemente debería permanecer adjunto. Llamando AttachCurrentThread
varias veces está muy bien ("Tratar de unir un hilo que se asocia ya es un no-op.")¿Tengo que desconectar JNI un hilo conectado?
¿Tengo que llamar DetachCurrentThread
antes el hilo termina, va a suceder de forma automática, o no lo es incluso ¿necesario? ¿Qué sucede si debo llamar a detach, pero no? ¿Simplemente se "fugaría" o podría incluso dañar el estado de la máquina virtual?
He comprobado la especificación de la interfaz nativa de Java, pero o no lo he visto o realmente no está especificado.
Mi pregunta se aplica específicamente a Sun JDK 6 en Windows XP.
Darn, estaba mirando la especificación JDK5 JNI todo el tiempo. La sección "Separar de la máquina virtual" es nueva en los documentos JDK6. ¡Gracias por tu ayuda! –
Me gustaría que hubiera más explicaciones sobre * why * debe llamar a DetachCurrentThread(). Si el hilo nativo está conectado como daemon, entonces la VM * no * esperará a que termine el hilo nativo adjunto. – technomage