zoukankan      html  css  js  c++  java
  • Java中的定时器

    注意:内容来自网络他人文章,特此声明

    一.Java中的定时器

      在JAVA中实现定时器功能要用的2个重要类是

    • Timer类:定时器类,需要一个TimerTask类的实例作为参数;
    • TimerTask:定时器任务类,定时器要执行的任务在该类的run方法中定义。

    二.实现定时器的两种写法

      1.普通实现(相对于通过内部类来实现而言)

     1 //先写一个类
     2 public class TimeTest {
     3 public static void main(String[] args) {
     4     
     5      Timer timer = new Timer();
     6      timer.schedule(new MyTask(),1000,2000);
     7 }
     8 
     9 //然后再写个类 
    10 public class MyTask  extends TimerTask{
    11 
    12     @Override
    13     public void run() {
    14      System.out.println("开始运行");        
    15     }
    16 }

      2.通过内部类实现

      

     1 package com.lid;
     2 
     3 import java.util.Calendar;
     4 import java.util.Date;
     5 import java.util.Timer;
     6 import java.util.TimerTask;
     7 
     8 public class Test {
     9     public static void main(String[] args) {
    10         //timer1();
    11         timer2();
    12         //timer3();
    13         //timer4();
    14     }
    15 
    16     // 第一种方法:设定指定任务task在指定时间time执行 schedule(TimerTask task, Date time)
    17     public static void timer1() {
    18         Timer timer = new Timer();
    19         timer.schedule(new TimerTask() {
    20             public void run() {
    21                 System.out.println("-------设定要指定任务--------");
    22             }
    23         }, 2000);// 设定指定的时间time,此处为2000毫秒
    24     }
    25 
    26     // 第二种方法:设定指定任务task在指定延迟delay后进行固定延迟peroid的执行
    27     // schedule(TimerTask task, long delay, long period)
    28     public static void timer2() {
    29         Timer timer = new Timer();
    30         timer.schedule(new TimerTask() {
    31             public void run() {
    32                 System.out.println("-------设定要指定任务--------");
    33             }
    34         }, 1000, 1000);
    35     }
    36 
    37     // 第三种方法:设定指定任务task在指定延迟delay后进行固定频率peroid的执行。
    38     // scheduleAtFixedRate(TimerTask task, long delay, long period)
    39     public static void timer3() {
    40         Timer timer = new Timer();
    41         timer.scheduleAtFixedRate(new TimerTask() {
    42             public void run() {
    43                 System.out.println("-------设定要指定任务--------");
    44             }
    45         }, 1000, 2000);
    46     }
    47    
    48     // 第四种方法:安排指定的任务task在指定的时间firstTime开始进行重复的固定速率period执行.
    49     // Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
    50     public static void timer4() {
    51         Calendar calendar = Calendar.getInstance();
    52         calendar.set(Calendar.HOUR_OF_DAY, 12); // 控制时
    53         calendar.set(Calendar.MINUTE, 0);       // 控制分
    54         calendar.set(Calendar.SECOND, 0);       // 控制秒
    55 
    56         Date time = calendar.getTime();         // 得出执行任务的时间,此处为今天的12:00:00
    57 
    58         Timer timer = new Timer();
    59         timer.scheduleAtFixedRate(new TimerTask() {
    60             public void run() {
    61                 System.out.println("-------设定要指定任务--------");
    62             }
    63         }, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行
    64     }
    65 }
  • 相关阅读:
    网络世界中的图片以及相关的处理
    Ninject 2.x细说1.基本使用
    Orchard1.4新功能自动路由(AutoRouter)并附Orchard最新1.4版汉化包
    json的一点总结
    ASP.NET MVC路由扩展:路由映射
    厚积薄发,丰富的公用类库积累,助你高效进行系统开发(12) 网络相关操作辅助类
    IIS是如何处理ASP.NET请求的
    一周最新示例代码回顾 (3/19–3/25)
    .NET插件系统(三) 插件间通信问题——设计可自组织和注入的组装程序
    缓存总结
  • 原文地址:https://www.cnblogs.com/tjudzj/p/4454513.html
Copyright © 2011-2022 走看看