Как создать реальный синглтон для всего компьютера в Java?True singleton для всего компьютера?
У меня есть консольное приложение, написанное на Java. если приложение выполняется во второй раз, я хочу, чтобы он знал, что основное приложение уже запущено (и выполняет задания). Второе выполнение просто позволит пользователю запрашивать данные (задания). Я знаю, что могу создать файл и написать ему все, но тогда мне придется также поддерживать сбрасывание компьютеров и т. Д.
Есть ли лучший способ сделать это?
резюмировать:
- я запустить приложение. Он имеет рабочие места и выполняет их в нужный промежуток времени.
- Я запускаю приложение во второй раз. Я получаю сообщение о том, что задания уже запущены, и я могу запрашивать данные из первого приложения.
- Запустите приложение в третий раз, и оно работает так же, как и во второй раз.
- Если я останавливаю первый экземпляр и запускаю новый, он работает как первый экземпляр.
P.S. Я знаю, что этот вопрос нужно было задавать более одного раза, но поиск google и StackOverflow дает мне ссылки только относительно шаблона проектирования Singleton.
Вы делаете это с помощью сокетов или с чем-то вроде [terracotta] (http://terracotta.org/) –
Одиночные игры - это не очень хорошая идея для одной JVM; Я думаю, что они еще хуже для всех JVM на машине. – duffymo
Попросите ваше первое приложение подключиться к сокету в качестве сервера. Остальные не смогут связываться с этим портом в качестве сервера, пока не умрет первый. В качестве бонуса другие могут затем привязываться как клиент и использовать этот сокет для связи между ними. –