Цитата Kreatifchk (
)
а затем в таймере каждые 20 миллисекунд запускаю метод run что-бы метод выполнялся постоянно
Ну сморите, при запуске метода start() создается новый поток и в нем автоматически выполняется метод run(), после того как метод run() завершился поток удаляется. нужно заново запускать метод start() чтобы вызвать метод run() в новом потоке.
В каком потоке находится таймер? Если в основном, тогда вызов метода run() по таймеру блокирует основной поток.
Попробуйте запускать по таймеру метод start(), скорее всего это не сработает и будет вылетать ошибка что-то типо "This thread is already running.". Тогда попробуйте останавливать поток перед запуском. Пример:
Код
public static void main(String args[]){
//MyThread это некий класс, наследующий Thread
MyThread mt = new MyThread();
while(timer){ //я не знаю как работает ваш таймер, но предположим что это цикл
if(!timer)continue; //если 20 секунд не прошло, то продолжаем цикл
if(mt.isAlive()){mt.interrupt();mt.join();}//пытаемся завершить поток и подключаемся к нему, чтобы не переходить к запуску потока до завершения
mt.start();
}
}
(ВНИМАНИЕ! код выше не работает, он просто представляет структуру. подключайте его в ваш таймер)
Если и это не поможет, тогда попробуйте третий способ.
Просто запускайте свой таймер в отдельном потоке.