zoukankan      html  css  js  c++  java
  • Java中基本知识梳理【定时器实现多线程】-----2015年3月15日

    Timer介绍:

    (1)基本方法:

      

    public Timer():创建一个新计时器。相关的线程 作为守护程序运行。

    public void schedule(TimerTask task, long delay, long period)

    安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。以近似固定的时间间隔(由指定的周期分隔)进行后续执行。 

    public void schedule(TimerTask task, Date time)

    安排在指定的时间执行指定的任务。如果此时间已过去,则安排立即执行该任务。 

    参数:

    task - 所要安排的任务。

    time - 执行任务的时间。 

    public void cancel()

    终止此计时器,丢弃所有当前已安排的任务。这不会干扰当前正在执行的任务(如果存在)。一旦终止了计时器,那么它的执行线程也会终止,并且无法根据它安排更多的任务。

    TimerTask介绍:

    public abstract void run()

    此计时器任务要执行的操作。 

    public boolean cancel()

    取消此计时器任务。如果任务安排为一次执行且还未运行,或者尚未安排,则永远不会运行。如果任务安排为重复执行,则永远不会再运行。(如果发生此调用时任务正在运行,则任务将运行完,但永远不会再运行。)  

    定时器如何实现多线程:

    将Timer对象和TimerTask对象绑定利用Timer对象中的schedule方法触发TimerTask类中run()方法实现多线程。

    实例:

    package test1;
    
    import java.util.Date;
    import java.util.IllegalFormatCodePointException;
    import java.util.Timer;
    import java.util.TimerTask;
    
    class Task extends TimerTask{
        private  int a=1;
        private int sum=0;
        public void run()
        {
            sum+=a;
            a++;
            System.out.println("HELLO");
            if(a>3)
            {
                System.out.println(sum);
                this.cancel();//这里的cancel()方法是TimerTask对象在调用,其中Timer和Timer类都含有cancel()方法
            }    
        }
    }
    public class TimerTask1 {
            public static void main(String[] args) {
                Timer time=new Timer();
                Task t=new Task();
                time.schedule(t, new Date(), 1);
                
            }
    }
  • 相关阅读:
    Http方法:Get请求与Post请求的区别
    udev和rules使用规则
    c++中的动态内存分配
    c++中重载运算符
    c++中静态成员函数
    c++中值传递,址传递,引用传递
    c++中实现单例模式singleton class
    [Windows篇] 在windows 10上源码编译gtest 并编写CMakeLists.txt
    [Ubuntu篇] 在ubuntu上源码编译gtest,编写gtest-config.cmake并测试
    使用boost data_time模块来获取毫秒级时间并转换为string字符串
  • 原文地址:https://www.cnblogs.com/khbcsu/p/4338892.html
Copyright © 2011-2022 走看看