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();
                }
            }
  • 相关阅读:
    Content Hugging Priority 和 Content Compression Resistance Priority
    fiddler 拦截小结
    好的 iOS 代码习惯
    查看约束优先级的方法
    定义接口常用约定
    让系统照片选择器的导航栏变蓝的代码
    ZT C语言实现字符串倒序
    ZT 蓝牙的AVCTP协议笔记
    ZT 蓝牙的AVDTP协议笔记
    ZT A2DP协议笔记
  • 原文地址:https://www.cnblogs.com/wq3435/p/6028807.html
Copyright © 2011-2022 走看看