Поскольку каждое приложение работает в его собственной виртуальной машины Java, нет очевидного способа обнаружить, если particuliar приложение уже запущено.
Socket техника
Один из способов обнаружить во избежание многократного выполнения приложений является использование простых сервер сокет. Приложение попытается соединение с этим сервером, если это успех, то программа уже работает (и остановить приложение), если нет соединения сделано, то применение создать сервер.
В этом примере простой сервер работает на той же машине, что применение такой машины называется "Localhost" используется порт 80, Вы можете настроить номер порта для вашей машины.
|
Чтобы проверить это, откройте консоль 2.
В консоли 1, тип Java JustOne.
В консоли 2, тип JustOne и Java-приложение должно реагирования "уже работает!".
Техника File Lock
[JDK1.4] Вы можете использовать флаг файла с блокировки механизма. Идея заключается в создании и блокировку файлов на user.home папку с названием условия. Одновременное исполнение попытается заблокировать и тот же файл и не удалось. Специальные "Shutdown крючок" обеспечивается, чтобы разблокировать файл, если JVM выключается.
|