网站首页 > 文章中心 > 其它

java代码实现定时器

作者:小编 更新时间:2023-09-04 11:21:24 浏览量:359人看过

在Java中如何实现较为精确的定时器

大部分人在遇到需要使用定时任务的时候首先会想到Timer类,

在新的java.util.concurrent包中的ScheduledExecutorService可以替代这个Timer:

使用方法举例:

Java代码

ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);

java代码实现定时器-图1

exec.scheduleAtFixedRate(new Runnable() {

public void run() {

try{

throw new RuntimeException();

}catch (Exception e){

System.out.println("RuntimeException catched");

java代码实现定时器-图2

}

java 定时任务的几种实现方式

JDK 自带的定时器实现

// schedule(TimerTask task, long delay) 延迟 delay 毫秒 执行

// schedule(TimerTask task, Date time) 特定时间执行

public static void main(String[] args) {

for (int i = 0; i 10; ++i) {

new Timer("timer - " + i).schedule(new TimerTask() {

@Override

println(Thread.currentThread().getName() + " run ");

}, 1000);

//该类需要继承Job类,然后添加execute(JobExecutionContext context)方法,在

//这个方法中就是我们具体的任务执行的地方.

//由希望由调度程序执行的组件实现的接口

public void execute(JobExecutionContext context) throws JobExecutionException {

// TODO Auto-generated method stub

// 执行响应的任务.

System.out.println("HelloJob.execute,"+new Date());

public static void main(String[] args) throws Exception {

//SchedulerFactory 是一个接口,用于Scheduler的创建和管理

SchedulerFactory factory = new StdSchedulerFactory();

//从工厂里面拿到一个scheduler实例

//计划表(可能翻译的不太贴切),现在我们有了要做的内容,

//与调度程序交互的主要API

/*

* Scheduler的生命期,从SchedulerFactory创建它时开始,

到Scheduler调用shutdown()方法时结束;Scheduler被创建后,

可以增加、删除和列举Job和Trigger,以及执行其它与调度相关的操作

(如暂停Trigger).但是,Scheduler只有在调用start()方法后,

才会真正地触发trigger(即执行job)

*/

Scheduler scheduler = factory.getScheduler();

//具体任务.

//用于定义作业的实例

//JobBuilder - 用于定义/构建JobDetail实例,用于定义作业的实例.

JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();

//Trigger(即触发器) - 定义执行给定作业的计划的组件

//TriggerBuilder - 用于定义/构建触发器实例

CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")

.withSchedule(CronScheduleBuilder.cronSchedule("0/1? * * * * ?")).build();

scheduler.scheduleJob(job, trigger);

scheduler.start();

*? 开启对定时任务的支持

@EnableScheduling

public class Application {

SpringApplication.run(Application.class, args);

@Component

public class ScheduledTasks {

private Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);

private? int? i=0;

public void testFixDelay() {

logger.info("执行方法"+i++);

java中怎么实现定时功能

这个是我在网上找的不知道是不是你要的:

java定时任务Timer 关于定时任务,似乎跟时间操作的联系并不是很大,但是前面既然提到了定时任务,索性今天这一节一起解决了.设置定时任务很简单,用Timer类就搞定了.第一段:延时执行首先,我们定义一个类,给它取个名字叫TimeTask,我们的定时任务,就在这个类的main函数里执行.代码如下:

package test;

import java.util.Timer;

public class TimeTaskTest {

public static void main(String[] args){ Timer timer = new Timer();

解释一下上面的代码.上面的代码实现了这样一个功能,当TimeTask程序启动以后,过一分钟后执行某项任务.很简单吧:先new一个Timer对象,然后调用它的schedule方法,这个方法有四个重载的方法,这里我们用其中一个,

public void schedule(TimerTask task,long delay)

首先,第一个参数第一个参数就是我们要执行的任务.这是一个TimerTask对象,确切点说是一个实现TimerTask的类的对象,因为TimerTask是个抽象类.上面的代码里 面,Task就是我们自己定义的实现了TimerTask的类,因为是在同一个包里面,所以没有显性的import进来.Task类的代码如下

import java.util.TimerTask;

public class Task extends TimerTask { public void run()

{

System.out.println("定时任务执行");

public void schedule(TimerTask task,Date time)

求一个简单的Java定时器源代码

我是让它每10毫秒扫描一下.

Calendar ca=null;

Calendar ca1=null;

Timer timer=new Timer();

static Connection con=null;

public void chu(){

ca=Calendar.getInstance();

ca1=(Calendar)ca.clone();

public void Time(){

float s=ca1.get(Calendar.SECOND)-ca.get(Calendar.SECOND)+(ca1.get(Calendar.MILLISECOND)-ca.get(Calendar.MILLISECOND))/1000f;

if(con==null){

System.out.println("耗时"+String.valueOf(s)+"秒");

if(ca.after(ca1)){

System.out.println("取不到连接");

timer.cancel();

return ;

}else{

ca.add(Calendar.MILLISECOND, 10);

timer.schedule(

new TimerTask() {

System.out.println("时间在溜走....");

Time();

}, ca.getTime());

void getcon(){

Connection con=null;//获取Connection

chu();

java定时器

import?java.io.IOException;

import?java.util.Timer;

public?class?TimerTest?{

public?static?void?main(String[]?args)?{

Timer?timer?=?new?Timer();

while?(true)?{//?这个是用来停止此任务的,否则就一直循环执行此任务了

try?{

int?ch?=?System.in.read();

if?(ch?-?'c'?==?0)?{

timer.cancel();//?使用这个方法退出任务

}?catch?(IOException?e)?{

//?TODO?Auto-generated?catch?block

e.printStackTrace();

static?class?MyTask?extends?java.util.TimerTask?{

public?void?run()?{

//?TODO?Auto-generated?method?stub

System.out.println("________");

这段代码基本能满足你需求了 你还有需求就在上面再套一层job 当然如过太复杂了而且这种定时需求很多的话 建议用quartz框架 使用很简单

java代码实现定时器-图3

JAVA实现定时任务的几种方式

Java 基本的定时任务,总结方法有三种:

①.? 创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果;

当启动和去取消任务时可以控制

第一次执行任务时可以指定你想要的delay时间

相比于Timer的单线程,它是通过线程池的方式来执行任务的

可以很灵活的去设定第一次执行任务delay时间

提供了良好的约定,以便设定执行的时间间隔

以上就是土嘎嘎小编为大家整理的java代码实现定时器相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章