Java多线程与并发库高级应用-传统定时器技术回顾
传统定时器技术回顾(jdk1.5以前)
public class TraditionalTimerTest {
    static int count = 0;
    public static void main(String[] args) {
        
        //10秒后开始执行,每隔3秒执行一次
        new Timer().schedule(new TimerTask() {
            
            @Override
            public void run() {
                System.out.println("bombing...");
                
            }
        }, 10000,3000);
        
        /**
         *  需求:2秒,4秒间隔执行定时任务
         */
        class MyTimerTask extends TimerTask{
            @Override
            public void run() {
                count = (count+1)%2;
                System.out.println("bombing...");
                new Timer().schedule(new MyTimerTask(), 2000 + 2000*count);
            }
        }
        new Timer().schedule(new MyTimerTask(), 2000);
        
        
        while(true){
            try {
                System.out.println(new Date().getSeconds());
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
      //对于较复杂的业务,周一~周五执行任务,周六日不执行
       //quartz 
 } }
还有一种方式,定义两个定时器
public class TimerTask1 extends TimerTask{ @Override public void run() { System.out.println("bombing..."); new Timer().schedule(new MyTimerTask2(), 4000); } }
public class MyTimerTask2 extends TimerTask{ @Override public void run() { System.out.println("bombing..."); new Timer().schedule(new TimerTask1(), 2000); } }
new Timer().schedule(new TimerTask1(), 2000); while(true){ System.out.println(new Date().getSeconds()); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } }
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号