Я написал задачу для отправки определенного TCP-сообщения через сокет. У меня есть файл с кучей сообщений и несколькими отметками времени, поэтому я запрограммировал задачу как TimerTask и запланировал ее с помощью таймера с отметкой времени первого сообщения.
Когда он завершается, метод запуска задачи завершается, но связанный с ним поток остается, он не отменяется. Если я попытаюсь перепланировать задачу с новым временем, я получаю исключение, говорящее мне, что я не могу перепланировать запланированную или отмененную задачу.
Я также пытался отменить его перед переносом, но, очевидно, как сказало исключение, проблема остается той же.
Я не могу запланировать задачу с постоянным периодом, чтобы она повторялась, потому что у каждого сообщения есть время, и оно непостоянно.
Как я могу изменить расписание TimerTask? И, кстати, есть ли способ дождаться завершения задачи, как при обмене данными через сокеты, когда он блокируется методом готовности до тех пор, пока не придет сообщение?