Я новичок в java. Я ищу фоновый поток в java, который периодически запускается даже после закрытия настольного приложения java. Мне нужна вещь, похожая на Сервис в Android. Я искал это, но нашел только темы, не обслуживающие. Я должен отправить данные на сервер, которые будут храниться в файле config.propertise через этот фоновый поток или службу. Заранее спасибо
Фоновый поток в Java
- stackoverflow .com / questions / 68113 / - Это помогает? 12.11.2014
- Спасибо, но это не та услуга 12.11.2014
- Эээ, ты ошибаешься, это то, что тебе нужно. 12.11.2014
Ответы:
У меня необычный способ сделать это. это работает для меня всегда. Вы должны выполнить определенную задачу после того, как пользователь закроет приложение, верно ??? . Просто переопределите функцию кнопки закрытия и скройте окно при закрытии. И продолжайте работу в ветке. Когда ваша работа будет завершена, закройте приложение, используя
System.exit
Пользователь никогда не узнает, что приложение работает в фоновом режиме.
Поток содержится внутри процесса, поэтому нет смысла говорить о потоках, которые запускаются после закрытия приложения.
Вы либо хотите:
- Предлагается отдельная служба, такая как @BatScream, которая представляет собой процесс, который работает в фоновом режиме без подключенного к нему окна приложения.
- Запланированная задача, которая использует механизм запланированных задач Windows для периодического запуска некоторого процесса. См. Запуск программы JAVA как запланированной задачи
- Или вы хотите, чтобы ваше приложение свернулось в трей. См. Как мне поместить приложение Java на панель задач?
Вы можете добиться того же, используя класс таймера. Здесь находятся фоновые службы Ow. Как создать службу Windows из приложения Java
Базовый this, создайте программу на Java, которая будет использоваться в качестве службы с Linux crontab или планировщиком Windows.
public class SomeService
{
// Your task will repeat itself periodically (here every minute), until it is stopped
private static final int SLEEP_TIME = 60000;
private static boolean stop = false;
public static void start(String[] args)
{
System.out.println("start");
while (!stop)
{
sendDataToServer();
try
{
Thread.sleep(SLEEP_TIME);
}
catch (InterruptedException e) {}
}
}
private void sendDataToServer()
{
// TODO your job here
}
public static void stop(String[] args)
{
System.out.println("stop");
stop = true;
}
public static void main(String[] args)
{
if ("start".equals(args[0]))
{
start(args);
}
else if ("stop".equals(args[0]))
{
stop(args);
}
}
}