Выход из JVM при ошибке - PullRequest
       2

Выход из JVM при ошибке

0 голосов
/ 16 октября 2011

Я работаю над этим приложением, которое требует загрузки собственной библиотеки.загрузка класса, который инициирует загрузку собственной библиотеки, выполняется в потоке, отличном от основного потока.Когда происходит ошибка (выдается ошибка), я ожидаю, что vm завершается, но в этом случае это не так.конечно, когда я не могу загрузить нативную библиотеку, я не должен продолжать, потому что это ядро ​​приложения.Я предполагаю, что мое приложение не завершается, потому что основной поток запускает как минимум 3 потока.поток подключения, который прослушивает, если гаджет был подключен, и затем информирует слушателя о том, что он был подключен или отключен, и другие потоки управления ресурсами.

Как мне завершить свое приложение, когда jls говорит, что приложениене должны пытаться отлавливать ошибки?

1 Ответ

1 голос
/ 16 октября 2011

Чтобы правильно ответить на ваш вопрос, мне нужно знать больше информации о других темах, которые вы создали.Могут ли они быть установлены для потоков типа демона?Если нет, как вы обычно грациозно выходите из этих тем?

Вот способ грубой силы (внутри потока, который загружает собственную библиотеку):

try {
    methodToLoadLibrary();
    doWhatYouNeedToDo();
} finally {
    System.exit(1);
}

, но это предполагает, что вы выйдете из всего процесса, когда этот поток завершится.

Если у вас есть метод, который можно вызвать для корректного завершения потоков, вы можете заменить вызов System.exit(1); следующим:

Collection<Stoppable> sList;
for(Stoppable s : sList) {
    s.stop();
}

, где Stoppable - интерфейс для связичто вы хотите аккуратное завершение работы этих потоков.

Существуют также менее чистые способы, такие как вызов Thread.stop в других потоках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...