Timer,TimerTask通过程序计数器实现的定时任务

Timer,TimerTask通过程序计数器实现的定时任务

2023年7月21日发(作者:)

Timer,TimerTask通过程序计数器实现的定时任务1、程序计数器程序计数器(Program Counter Register)是⼀块较⼩的内存空间,它的作⽤可以看做是当前线程所执⾏的字节码的⾏号指⽰器。在虚拟机的概念模型⾥(仅是概念模型,各种虚拟机可能会通过⼀些更⾼效的⽅式去实现),字节码解释器⼯作时就是通过改变这个计数器的值来选取下⼀条需要执⾏的字节码指令,分⽀、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。由于Java 虚拟机的多线程是通过线程轮流切换并分配处理器执⾏时间的⽅式来实现的,在任何⼀个确定的时刻,⼀个处理器(对于多核处理器来说是⼀个内核)只会执⾏⼀条线程中的指令。因此,为了线程切换后能恢复到正确的执⾏位置,每条线程都需要有⼀个独⽴的程序计数器,各条线程之间的计数器互不影响,独⽴存储,我们称这类内存区域为“线程私有”的内存。如果线程正在执⾏的是⼀个Java ⽅法,这个计数器记录的是正在执⾏的虚拟机字节码指令的地址;如果正在执⾏的是Natvie ⽅法,这个计数器值则为空(Undefined)。此内存区域是唯⼀⼀个在Java 虚拟机规范中没有规定任何OutOfMemoryError 情况的区域——————————————————————————————上⾯是jvm原理————————————————import ar;import ;import ;import ask;public class Task3 {static int count = 0;public static void showTimer() {TimerTask task = new TimerTask() {@Overridepublic void run() {++count;n("时间=" + new Date() + " 执⾏了" + count + "次"); // 1次}};//设置执⾏时间Calendar calendar = tance();int year = ();int month = ();int day = (_OF_MONTH);//每天//定制每天的21:09:00执⾏,(year, month, day, 21, 9, 00);Date date = e();Timer timer = new Timer();n(date);int period = 2 * 1000;//每天的date时刻执⾏task,每隔2秒重复执⾏le(task, date, period);//每天的date时刻执⾏task, 仅执⾏⼀次//le(task, date);}public static void main(String[] args) {showTimer();}}

发布者:admin,转转请注明出处:http://www.yc00.com/web/1689930262a295222.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信