Я подозреваю, что это:
Opencsv csv = new Opencsv();
csv.Csvreader();
блокирует поток таймера.Вы пытались сделать это в фоновом потоке?
Например, ваш код эквивалентен этому:
import java.util.Timer;
import java.util.TimerTask;
public class TestTimer {
public static void main(String[] args) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("here");
try {
Thread.sleep(10 * 1000);
} catch (InterruptedException e) {}
}
}, 1000, 1000);
}
}
Я предлагаю вместо этого сделать внутреннюю работу в фоновом потокечтобы не замедлять таймер.Обратите внимание на разное время выполнения этого:
import java.util.Timer;
import java.util.TimerTask;
public class TestTimer {
public static void main(String[] args) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
new Thread(new Runnable() {
public void run() {
System.out.println("here");
try {
Thread.sleep(10 * 1000);
} catch (InterruptedException e) {}
}
}).start();
}
}, 1000, 1000);
}
}
Редактировать 2
Опять же, ваш вопрос имеет тег "swing", предполагающий, что ваш вопрос включает в себя код, который является частьюSwing GUI.Если это так, то рекомендации, возможно, должны отличаться, особенно если любой ваш код должен вызываться в потоке событий Swing.