1.由于只有一个线程进行任务的调度,给个任务之间是串行的,所以在执行是有所延迟,相关例子如下
//延时 public static void main(String[] args) { TimerTask Task1=new TimerTask(){ @SneakyThrows @Override public void run() { System.out.println("1"); Thread.sleep(1000); } }; TimerTask Task2=new TimerTask(){ @Override public void run() { System.out.println("2"); } }; System.out.println("begin"); long now=System.currentTimeMillis(); timer.schedule(Task1,1000); System.out.println("Task1"+(System.currentTimeMillis()-now)); timer.schedule(Task2,1000); System.out.println(System.currentTimeMillis()-now); }
2.无法保证程序的正常运行,当运行出错
public static void main(String[] args) { TimerTask task1=new TimerTask() { @Override public void run() { System.out.println("1"); int i=1/0; } }; TimerTask task2=new TimerTask() { @Override public void run() { System.out.println("2"); int i=1/0; } }; timer.schedule(task1,100); timer.schedule(task2,100); }