Java - поймать ПК отключает событие, или эквивалент - PullRequest
1 голос
/ 31 августа 2011

Я создал программное обеспечение, которое редактирует некоторые файлы XML. При открытии файла создается файл блокировки, чтобы избежать одновременного редактирования файла несколькими пользователями.

Я бы хотел удалить такую ​​блокировку, если кто-то выключит компьютер. (Приложение работает как в Linux, так и в Windows.)

Существует ли какой-либо общий сигнал, который передается на виртуальную машину при попытке закрыть текущий раздел?

Cheers,
Ste

Ответы [ 2 ]

2 голосов
/ 31 августа 2011

Вы можете попытаться добавить ловушку отключения :

final Thread mainThread = Thread.currentThread();
Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() {
        // remove lock file...
    }
});

В этом случае код в run -методе будет выполнен до завершения JVM.(Если JVM не будет убита чем-то вроде kill -9 31337.)

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

0 голосов
/ 31 августа 2011

Стандарт Runtime.addShutdownHook (...)

Более продвинутая техника с использованием JNI, Как заставить приложение Java корректно завершить работу в Windows?

...