• java 多线程 day02 定时器


    package com.czbk.thread;

    import java.util.Date;
    import java.util.Timer;
    import java.util.TimerTask;

    /**
    * http://blog.csdn.net/xiaoliuliu2050/article/details/74014463
    * http://blog.csdn.net/myblog_dhy/article/details/46791173
    *
    *
    * Created by chengtao on 17/11/30.
    *
    * timer 定时器
    * schedule 调度方法
    * new Timer.schedule(TimerTask task, long delay)
    * new Timer.schedule(TimerTask task, long delay, long period)
    * new Timer.schedule(TimerTask task, Date date)
    * new Timer.schedule(TimerTask task, Date firstTime, long period)
    *
    */
    public class Thread02_TraditionalThread_Timer {
    private static int count = 0;
    public static void main(String[] args) {
    //注意:定时器并没有开启新的线程。可以通过先执行printTime,后执行定时任务来验证
    doSomethingAfer1OSecond();
    printTime();

    }

    //主线程的计时器
    public static void printTime(){
    while (true){
    System.out.println("主线程 计时:" + new Date().getSeconds());
    try {
    Thread.sleep(1000);
    }catch (Exception e){
    }
    }
    }

    // 定时器1: 10秒以后执行某个任务,只执行一次
    public static void doSomethingAfer1OSecond(){
    new Timer().schedule(new TimerTask() {
    public void run() {
    System.out.println("定时器1,经过: 10000 毫秒后执行,只执行一次");
    }
    }, 10000);
    }

    // 定时器2: 10秒以后执行某个任务,之后,每隔3秒执行一次
    public static void doSomethingAfer1OSecondt_Afer3SecondsContinue(){
    new Timer().schedule(new TimerTask() {
    public void run() {
    System.out.println("定时器2,经过: 10000 毫秒后执行,之后每隔3000毫秒执行一次");
    }
    }, 10000,3000);
    }

    // 定时器3_1: 任务每2/4间隔执行
    public static void doSomethingAfer2And4Second_1(){
    new Timer().schedule(new TimerTask() {
    public void run() {
    System.out.println("定时器3_1,任务每2/4间隔执行");
    //------------ 定时器 内部再创建一个定时器,当外部的定时器打印了之后,内部的定时器开始计时,定时
    new Timer().schedule(new TimerTask() {
    public void run() {
    System.out.println("定时器3_1,任务每2/4间隔执行");
    }
    }, 2000);
    //------------
    }
    }, 2000);
    }

    // 定时器3_2: 任务每2/4间隔执行,
    public static void doSomethingAfer2And4Second_2(){
    new Timer().schedule(new TimerTask() {
    public void run() {
    System.out.println("定时器3_2,任务每2/4间隔执行");
    //------------ 定时器 内部再创建一个定时器,当外部的定时器打印了之后,内部的定时器开始计时,定时
    new Timer().schedule(this, 2000);//报错:Task already scheduled
    //------------
    }
    }, 2000);
    }

    // 定时器3_3: 任务每2/4间隔执行,
    public static void doSomethingAfer2And4Second_3(){

    class MyTimerTask extends TimerTask{
    @Override
    public void run() {
    count++;
    System.out.println("定时器3_3,任务每2/4间隔执行 count = " + count);
    new Timer().schedule(new MyTimerTask(),2000+2000*(count%2));
    }
    }

    new Timer().schedule(new MyTimerTask(), 2000);
    }

    // 定时器3_4: 任务每2/4间隔执行,
    public static void doSomethingAfer2And4Second_4(){
    while (true){
    new Timer().schedule(new TimerTask() {
    public void run() {
    System.out.println("定时器3_4,任务每2/4间隔执行 ");
    }
    }, 2000);

    }
    }

    // 定时器4: 任务在指定时间开始执行,
    public static void doSomethingInTheNeedDate(){
    while (true){
    new Timer().schedule(new TimerTask() {
    public void run() {
    System.out.println("定时器4,任务在指定时间开始执行 ");
    }
    }, new Date());
    }
    }

    // 定时器5: 任务在指定时间开始执行,之后每隔一段时间执行一次
    public static void doSomethingInTheNeedDatePeriod(){
    while (true){
    new Timer().schedule(new TimerTask() {
    public void run() {
    System.out.println("定时器5: 任务在指定时间开始执行,之后每隔1秒执行一次 ");
    }
    }, new Date(),1000);
    }
    }

    }
  • 相关阅读:
    《社会动物》笔记
    对长城汽车品牌多样化的一点思考
    LightGBM简单例子
    mysql拆分字符串为多行(逗号等分割)
    vue中$refs、$emit、$on的使用场景
    js中的call()和apply()和bind()方法
    Vue.js中this.$nextTick()的使用
    Vue中ref和$refs的介绍及使用
    ES6(异步操作和Async函数&await)
    vue项目在git commit时,使用eslint检测
  • 原文地址:https://www.cnblogs.com/ctaixw/p/7934868.html
Copyright © 2020-2023  润新知