当前位置: 首页 > 图灵资讯 > 技术篇> java定时执行方法 java定时函数

java定时执行方法 java定时函数

来源:图灵教育
时间:2023-05-17 11:45:34

一、概述

定时计划任务功能主要用于Java中的Timer对象,内部采用多线程处理,与多线程技术密切相关。在JDK中,Timer类主要负责计划任务,即在指定时间执行任务,但包装任务类确实是TimerTask类。

二、应用场景

当我们使用timer时,通常有四种情况,但通常有两种场景: 1、指定时间执行; 2、指定时间执行后,间隔指定时间重复执行;

三、使用方法

1、首先,定义要执行的任务(当然也可以写成匿名内部类)应该通过继承timertask类并实现run()来实现。 2、通过Timer,需要创建定时器(Timer类对象),schedule(TimerTask task,Date time)执行时间运输任务的方法。 代码1:使用外部类

package day08;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.util.TimerTask;/* * Timer 定时器 */public class TimerDemo001 {public static void main(String[] args) (//创建Timer对象Timer t=new Timer();//第一个参数,传输定时器任务对象//第二个参数需要传输时间//创建任务对象Mytask task=new MyTask();//t.schedule(task, 5000);///每次重复执行任务需要多少毫秒?.schedule(task,5000,1000);//首先是传入定时器的任务,二是传入时间,第三个参数是下一个}}//定义定时器的任务classs,每隔多少毫秒 MyTask extends TimerTask{@Overridepublic void run() (///编写执行任务代码//创建系统Datee date=new Date();//创建格式时间对象Simpledateformate sd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");///格式化Date时间类型,返回格式化后的字符串String time=sd.format(date);///将时间输出到控制台Systemem.out.println(time);}}

测试:(5000毫秒,即5秒后显示第一个输出,然后每秒输出一次)

java定时执行方法 java定时函数_System

 

代码2:使用匿名内部类实现倒计时

package day08;import java.util.Timer;import java.util.TimerTask;public class TimerDemo02 {public static void main(String[] args) {Timer t=new Timer();t.schedule(new TimerTask(){int count=10;public void run() {// TODO Auto-generated method stubSystem.out.println(倒计时:"+count);count--;if(count==0) {System.out.println("砰");///取消定时器t.cancel();}}},500,1000); }}

测试:

java定时执行方法 java定时函数_System_02

代码3:也是内部类,个人觉得这个只适合一个线程。

package day08;import java.util.Timer;import java.util.TimerTask;/** * Timer 定时器 * @author Administrator * */public class TimerDemo04 {public static void main(String[] args) {///倒计时,倒计时从10开始,当计数器达到0时,模拟爆炸声Timer t=new Timer();TimerTask task=new TimerTask(){int count=10;public void run() {// TODO Auto-generated method stubSystem.out.println(count);count--;if(count==0) {System.out.println("peng");t.cancel();}}};t.schedule(task, 0, 1000);}}

测试:

java定时执行方法 java定时函数_监听器_03

四、使用Swing包下的Timer

计时器(Timer)组件可以在指定的时间间隔内启动一个或多个Actionevent。设置计时器的过程包括创建一个timer对象,在对象上注册一个或多个动作监听器,并使用start()启动计时器。

例如,以下代码创建并启动每秒触发动作事件的计时器(Timer结构方法的第一个参数指定)。Timer结构方法的第二个参数指定接收计时器动作事件的监听器。

在创建timer类别时,应指定延迟参数和actionlistener。延迟参数用于设置初始延迟和事件触发之间的延迟(以毫秒为单位)。启动计时器后,它将等待初始延迟,直到它触发注册监听器的第一个Actionevent。第一次事件发生后,它继续触发事件,直到它停止。

创建timer类别后,可以单独更改初始延迟和事件之间的延迟,并添加其他actionlistener。如果您希望计时器只能在第一次触发并停止,您可以调用setrepeatsster(false)。

4.1、常用API

addActionListener(ActionListener 1):在Timer中添加一个动作监听器

getDelay():以毫秒为单位返回两次触发事件之间的延迟。

isCoalesce():若Timer组合多个挂起动作事件,则返回True。

isRunning():如果timer正在运行,则返回true。

restart():重新启动Timer,取消所有挂起的启动,并按初始延迟触发。

setCoalesce(boolean flag):设置Timer是否与多个挂起的Actionevent相结合。

setDelay(int delay):两个连续动作事件之间的毫秒数,设置Timer的事件之间的延迟。

setLogTimers(boolean flag):启动/禁用计时器日记。

setReapeats(boolean flag):如果flag是false,则表示timer只向其监听器发送一次事件。

start():启动Timer,使其开始向其监听器发送动作事件。

stop():停止timer,停止向其监听器发送动作事件。

代码:

package day08;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Date;import javax.swing.JOptionPane;import javax.swing.Timer;/* * Swing swing包下Timer的一个类(组件) */public class Threadtimerdemo0 {public static void main(String[] args) {Timer timer=new  Timer(1000,new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println(new Date());///定时打印当前时间       // Toolkit.getDefaultToolkit().beep();//声一声});///启动定时器timer.start();JOptionPane.showMessageDialog(null, "确定退出程序";//打开后弹框询问是否停止Systemem.exit(0);/停止虚拟机}

测试:(点击确定后不再继续显示时间)

java定时执行方法 java定时函数_System_04