2016-10-14 4 views
4

У меня есть ситуация, когда я использую JNA с некоторым собственным кодом с обратными вызовами, и я замечаю, что для каждого обратного вызова основной поток собственного кода заставляет его обрабатывать новый поток java обратный вызов. Есть ли способ с JNA указать, какой поток связан с обратными вызовами, чтобы я мог получить их все в одном потоке? В настоящее время я получаю тысячи новых потоков каждые несколько секунд, и это довольно ресурс.JNA: Используйте один поток для всех обратных вызовов

ответ

3

После многократного поиска я нашел правильный ответ. Я создал CallbackThreadInitilizer и использовал метод Native.addCallbackThreadInitilizer, чтобы связать его с каждым обратным вызовом. Это поставило их в одну нить. Если у вас есть готовый ответ или у вас есть какой-то флаг, который вы отправляете, чтобы указать, что этот обратный вызов является последним, вы можете вызвать Native.detatch (true) в этом случае, чтобы отсоединить поток и позволить ему быть очищенным gc. Если вы этого не сделаете, похоже, какое-то время держитесь, а иногда делайте новые и закрывайте старые. Я никогда не видел, чтобы он держал больше трех раз.

 Смежные вопросы

  • Нет связанных вопросов^_^