Ho un thread nativo che deve chiamare in Java. Per questo, ho bisogno di collegare il thread alla VM utilizzando AttachCurrentThread
. Dal momento che questo richiamo avverrà abbastanza spesso, il thread dovrebbe probabilmente rimanere collegato. Chiamare AttachCurrentThread
più volte va bene ("Cercando di collegare un thread che è già collegato è un no-op.")Devo JNI Staccare un thread allegato?
Devo chiamare DetachCurrentThread
prima che il thread esca, accadrà automaticamente, o non è nemmeno necessario? Cosa succede se devo chiamare distaccare, ma non farlo? Sarebbe solo "leak", o potrebbe addirittura corrompere lo stato della VM?
Ho controllato la specifica di Java Native Interface, ma o l'ho persa, oppure è davvero non specificata.
La mia domanda riguarda specificamente Sun JDK 6 su Windows XP.
Dannazione, stavo guardando le specifiche JDK5 JNI tutto il tempo. La sezione "Scollegamento dalla VM" è nuova nei documenti JDK6. Grazie per l'aiuto! –
Vorrei che ci fossero ulteriori spiegazioni su * perché * deve chiamare DetachCurrentThread(). Se il thread nativo è collegato come demone, la VM * non * aspetterà il completamento del thread nativo allegato. – technomage