У меня есть к отсоединению JNI приложенный поток?

У меня есть некоторый собственный поток, который должен звонить в Java. Для этого я должен присоединить поток к использованию VM AttachCurrentThread. Так как этот обратный вызов произойдет довольно часто, поток должен, вероятно, остаться приложенным. Вызов AttachCurrentThread многократно прекрасен ("Пытающийся присоединить поток, который уже присоединяется, не".)

Сделайте я должен звонить DetachCurrentThread перед выходами потока это произойдет автоматически, или это даже не требуется? Что происходит, если я должен назвать отсоединение, но сделать нет? Это просто "протекло" бы, или мог это ровное повреждение состояние VM?

Я проверил Собственный компонент Java Интерфейсная спецификация, но или пропустил это, или это действительно является неуказанным.

Мой вопрос применяется конкретно к Sun JDK 6 на Windows XP.

6
задан RzR 8 June 2012 в 14:18
поделиться

1 ответ

Я думаю, что подтверждение, которое вы хотите получить, находится здесь: http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/invocation.html#wp1060

Нативный поток, подключенный к ВМ, должен вызвать DetachCurrentThread(), чтобы отсоединиться перед выходом.

И в следующей секции есть обоснование:

ВМ ждет, пока текущий поток не станет единственным пользовательским потоком, не являющимся демоном, перед тем, как он фактически выгрузится. Пользовательские потоки включают как Java-потоки, так и прикрепленные родные потоки.

8
ответ дан 16 December 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: