zoukankan      html  css  js  c++  java
  • Java——线程定时器

    █ 定时器是一个应用十分广泛的线程工具
    █ 可用于调度多个定时任务以后台线程的方式来执行。在Java中,可以通过Timer和TimerTask来实现定义调度功能。

    Timer 定时器
    public Timer()
    TimerTask(抽象类)
    public boolean cancel()
    public abstract void run()

    TimerDemo.java
    导包什么的略去
    public class TimerDemo {
            //定时炸弹,计时3S后爆炸
            public static void main(String[] args) {
                    Timer timer=new Timer();
                    //Date date=new Date(); //当前时间
                    //System.out.println(date);
                    //timer.schedule(new MyTask(), 3000);
                    //timer.schedule(new MyTask(), 3000,1000);  //delay指延迟多少时间,以毫秒为单位。
                    //timer.schedule(new MyTask(), 3000, 1000);
                   //timer.cancel(); //终止此计时器,丢弃所有当前已安排的任务。
                    Date date;
                    DateFormat dFormat=DateFormat.getInstance();  //获取为日期和时间使用 SHORT 风格的默认日期/时间格式器
                    try {
                            date=dFormat.parse("Fri Mar 10 18:26:39 CST 2017");  //这里不对,出问题
    //这里可以看看练习tese5.java
                            System.out.println("TimerDemo.main()"+date.toLocaleString());
                            timer.schedule(new MyTask(), date);
                    } catch (ParseException e) {
                            // TODO 自动生成的 catch 块
                            e.printStackTrace();
                    }
            }
    }
    class MyTask extends TimerTask{
            public void run() {
                    System.out.println("MyTask.run() 炸弹爆炸了");
            }       
    }
    /**
    *      void schedule(TimerTask task, Date time);
            安排在指定的时间执行指定的任务。

            void schedule(TimerTask task, Date firstTime, long period);
            安排指定的任务在指定的时间开始进行重复的固定延迟执行。

            void schedule(TimerTask task, long delay);
            安排在指定延迟后执行指定的任务。

            void schedule(TimerTask task, long delay, long period);
            安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。

            void scheduleAtFixedRate(TimerTask task, Date firstTime, long period);
            安排指定的任务在指定的时间开始进行重复的固定速率执行。

            void scheduleAtFixedRate(TimerTask task, long delay, long period);
            安排指定的任务在指定的延迟后开始进行重复的固定速率执行。
    *      
    **/

    //System.out.println(date);
         
    //timer.schedule(new MyTask(), 3000);
        





    Timer:

    一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。

    与每个 Timer 对象相对应的是单个后台线程,用于顺序地执行所有计时器任务。计时器任务应该迅速完成。如果完成某个计时器任务的时间太长,那么它会“独占”计时器的任务执行线程。因此,这就可能延迟后续任务的执行,而这些任务就可能“堆在一起”,并且在上述不友好的任务最终完成时才能够被快速连续地执行。

    Timer 对象最后的引用完成后,并且 所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且成为垃圾回收的对象)。但是这可能要很长时间后才发生。默认情况下,任务执行线程并不作为守护线程 来运行,所以它能够阻止应用程序终止。如果调用者想要快速终止计时器的任务执行线程,那么调用者应该调用计时器的 cancel 方法。

    如果意外终止了计时器的任务执行线程,例如调用了它的 stop 方法,那么所有以后对该计时器安排任务的尝试都将导致 IllegalStateException,就好像调用了计时器的 cancel 方法一样。 



























  • 相关阅读:
    javascript中的console.log有什么作用?
    在线js调试工具JSbin、jsFiddle
    mysql下的将多个字段名的值复制到另一个字段名中(批量更新数据)字符串拼接cancat实战例子
    处理内容有&特殊字符thinkphp返回xml无法解析的问题<![CDATA[xxx]]>
    checkbox的readonly不起作用的解决方案
    jquery-easyui combobox combogrid 级联不可编辑实例
    表格行的全选与单选
    表格与ckeckbox的全选与单选
    隐藏与显示铵钮
    判断字符是否包含有特殊字符
  • 原文地址:https://www.cnblogs.com/meihao1203/p/9181830.html
Copyright © 2011-2022 走看看