zoukankan      html  css  js  c++  java
  • 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();
                }
            }
  • 相关阅读:
    20159302 《网络攻击与防范》第三周学习总结
    Json序列化空时间字段出异常
    IIS 原理
    谴责盛大Bambook 的ADB.EXE流氓进程
    Fix: ADB server didn’t ACK
    在线UI设计
    解决装Windows蓝屏问题。
    如何成为一个C++高级程序员
    Python编程规范及性能优化
    iDempiere 使用指南 插件安装过程
  • 原文地址:https://www.cnblogs.com/wq3435/p/6028807.html
Copyright © 2011-2022 走看看