Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Метод Runtime.addShutdownHook
может использоваться для добавления ловушки выключения, которая в основном представляет собой не запущенный поток
, который выполняется при завершении работы Java Виртуальная машина.
Однако это территория, к которой следует подходить осторожно, поскольку она выполняется в очень чувствительный момент жизненного цикла JVM. Из спецификаций API для метода Runtime.addShutdownHook
:
Перехватчики выключения запускаются в непростое время в жизненном цикле виртуальной машины и поэтому должны быть закодированы оборонительно. Они должны в в частности, быть написанным как потокобезопасность и предотвращение взаимоблокировок насколько это возможно.
В любом случае, обязательно прочтите немного о том, как работают хуки выключения, поскольку к ним, вероятно, не стоит приближаться без хорошей подготовки. Обязательно внимательно прочтите спецификацию API для метода Runtime.addShutdownHook
.
Вот пара статей, которые я нашел при поиске информации для этого ответа:
Shutdown Hooks - it показывает небольшой пример того, как добавляется ловушка выключения для регистрации при выключении.
Дизайн API обработчиков выключения - рассматривает некоторые проектные решения хуков выключения в стиле вопросов и ответов.
Функция Runtime.addShutdownHook (Thread thehook)
позволяет вам зарегистрировать ловушку в виртуальной машине Java.
Хук работает как инициализированный, но не запущенный поток, который будет вызываться JVM при выходе. Если вы регистрируете более одного крючка, обратите внимание, что порядок, в котором они вызываются, не определен.