zoukankan      html  css  js  c++  java
  • Timer,TimerTask通过程序计数器实现的定时任务

    1、程序计数器

    程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看

    做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,

    各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变

    这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、

    线程恢复等基础功能都需要依赖这个计数器来完成。

    由于Java 虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现

    的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)只会执行

    一条线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要

    有一个独立的程序计数器,各条线程之间的计数器互不影响,独立存储,我们称这类内

    存区域为“线程私有”的内存。

    如果线程正在执行的是一个Java 方法,这个计数器记录的是正在执行的虚拟机字节

    码指令的地址;如果正在执行的是Natvie 方法,这个计数器值则为空(Undefined)。此

    内存区域是唯一一个在Java 虚拟机规范中没有规定任何OutOfMemoryError 情况的区域

    ——————————————————————————————上面是jvm原理————————————————

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

    public class Task3 {
    static int count = 0;
    public static void showTimer() {
    TimerTask task = new TimerTask() {
    @Override
    public void run() {
    ++count;
    System.out.println("时间=" + new Date() + " 执行了" + count + "次"); // 1次
    }
    };
    //设置执行时间
    Calendar calendar = Calendar.getInstance();
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH);
    int day = calendar.get(Calendar.DAY_OF_MONTH);//每天
    //定制每天的21:09:00执行,
    calendar.set(year, month, day, 21, 9, 00);
    Date date = calendar.getTime();
    Timer timer = new Timer();
    System.out.println(date);
    int period = 2 * 1000;
    //每天的date时刻执行task,每隔2秒重复执行
    timer.schedule(task, date, period);
    //每天的date时刻执行task, 仅执行一次
    //timer.schedule(task, date);
    }
    public static void main(String[] args) {
    showTimer();
    }
    }

  • 相关阅读:
    02安卓用户界面优化之(三)如何使用菜单
    07-业务敏捷:帮助DevOps快速落地的源动力
    转型之路:企业实施DevOps的常见路径和问题
    价值流分析:关于DevOps转型,我们应该从何处入手
    DevOps的衡量:你是否找到了DevOps的实施路线图
    DevOps的实施:到底是工具先行还是文化先行
    DevOps的价值:数字化转型时代,DevOps是必选项
    DevOps的“定义”:DevOps究竟要解决什么问题
    Jenkins产品经理是如何设计产品的
    关于DevOps组织和文化的那些趣事儿.
  • 原文地址:https://www.cnblogs.com/xiyangyang2hao/p/6704331.html
Copyright © 2011-2022 走看看