zoukankan      html  css  js  c++  java
  • 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);
    }
    }

    }
  • 相关阅读:
    JS加载机制
    js原型和原型链(用代码理解代码)
    解决echarts图形由于label过长导致文字显示不全问题
    微信小程序setData()异常
    Add GNOME to a CentOS Minimal Install
    vim的tab缩进及用空格设置
    ORA-12547: TNS:lost contact
    python+Django实现Nagios自动化添加监控项目
    python <tab>自动补全
    电信服务规范
  • 原文地址:https://www.cnblogs.com/ctaixw/p/7934868.html
Copyright © 2011-2022 走看看