我再再
你这个傻逼，再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再再使用不定时器进行启动，启动后会自动循环计数，再次达到设置的时间时，再执行定时器代码，再重新计数，以此类推。
，*/
，public static void test1() {
，final Timer timer = new Timer("timer thread", true);
，timer.schedule(new TimerTask() {
，@Override
，public void run() {
，System.out.println("timer");
，}
，}, 1000, 1000);
，}

，/**
，* 使用scheduleAtFixedRate并且调用cancle方法停止定时器
，*/
，public static void test2() {
，final Timer timer = new Timer("timer thread", true);
，timer.scheduleAtFixedRate(new TimerTask() {
，@Override
，public void run() {
，System.out.println("timer");
，}
，}, 1000, 1000);

，try {
，Thread.sleep(5000);
，} catch (InterruptedException e) {
，e.printStackTrace();
，}

，timer.cancel();
，System.out.println("timer.cancel()");
，}

，/**
，* 使用schedule方法会遇到以下问题：
，* 1. 如果执行任务的时间超过了周期时间，则下次任务的执行会推迟到上次任务执行完之后立即执行，任务会被串行化
，* 2. 如果任务执行时间过长，会导致下次任务的执行时间延后，且下次执行时间是上次任务结束时间为起点开始计算的
，*/
，public static void test3() {
，final Timer timer = new Timer("timer thread", true);
，timer.schedule(new TimerTask() {
，@Override
，public void run() {
，try {
，Thread.sleep(2000);
，} catch (InterruptedException e) {
，e.printStackTrace();
，}
，System.out.println("timer1");
，}
，}, 1000, 1000);

，timer.schedule(new TimerTask() {
，@Override
，public void run() {
，System.out.println("timer2");
，}
，}, 1000, 1000);
，}

，/**
，* 使用scheduleAtFixedRate方法可以解决task执行时间过长的问题，但是每次的执行周期并不是真正的固定周期
，*/
，public static void test4() {
，final Timer timer = new Timer("timer thread", true);
，timer.scheduleAtFixedRate(new TimerTask() {
，@Override
，public void run() {
，try {
，Thread.sleep(2000);
，} catch (InterruptedException e) {
，e.printStackTrace();
，}
，System.out.println("timer1");
，}
，}, 1000, 1000);

，timer.scheduleAtFixedRate(new TimerTask() {
，@Override
，public void run() {
，System.out.println("timer2");
，}
，}, 1000, 1000);
，}

，/**
，* Timer的执行线程是串行的，所以如果一个任务的执行时间过长，会影响其他任务的执行
，* 另外，Timer对于每个任务都是新启一个线程去执行的，所以任务之间是并行的
，*/
，public static void test5() {
，final Timer timer = new Timer("timer thread", true);
，timer.schedule(new TimerTask() {
，@Override
，public void run() {
，System.out.println("task1 start");
，try {
，Thread.sleep(5000);
，} catch (InterruptedException e) {
，e.printStackTrace();
，}
，System.out.println("task1 end");
，}
，}, 1000);

，timer.schedule(new TimerTask()