java定时执行,java定时执行任务框架

本文目录一览:

java定时任务没有执行完又到执行时间了

代码错误。多数是代码错误导致java定时任务没有执行完又到执行时间了。

1、首先打开java检查代码是否错误。

2、其次打开网络诊断器进行测试网络连接是否异常。

3、最后点击重新运行java即可。

java的几种定时任务

java定时任务有三种:

– JDK自带 :JDK自带的Timer以及JDK1.5+ 新增的ScheduledExecutorService;

– Quartz    :简单却强大的JAVA作业调度框架

– Spring3.0以后自带的task :可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多;

代码参考:

JDK 自带的定时器实现

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

public void run() {

println(Thread.currentThread().getName() + ” run “);

}

}, new Date(System.currentTimeMillis() + 2000));

}

}

Quartz 定时器实现

2.1  通过maven引入依赖(这里主要介绍2.3.0)  注意:shiro-scheduler中依赖的是1.x版本  如果同时使用会冲突

!– —

dependency

groupIdorg.quartz-scheduler/groupId

artifactIdquartz/artifactId

version2.3.0/version

/dependency

2.2 创建Job类

public class TestJob implements Job{

@Override

public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

println(Thread.currentThread().getName() + ” test job begin ” + DateUtil.getCurrentTimeStr());

}

}

2.3 调度任务

public static void main(String[] args) throws InterruptedException, SchedulerException {

Scheduler scheduler = new StdSchedulerFactory().getScheduler();

// 开始

scheduler.start();

// job 唯一标识 test.test-1

JobKey jobKey = new JobKey(“test” , “test-1”);

JobDetail jobDetail = JobBuilder.newJob(TestJob.class).withIdentity(jobKey).build();

Trigger trigger = TriggerBuilder.newTrigger() .withIdentity(“test” , “test”)

// 延迟一秒执行

.startAt(new Date(System.currentTimeMillis() + 1000))

// 每隔一秒执行 并一直重复

.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(1).repeatForever())

.build();

scheduler.scheduleJob(jobDetail , trigger);

Thread.sleep(5000);

// 删除job

scheduler.deleteJob(jobKey);

}

3.Spring 相关的任务调度

3.1 配置文件实现

spring-schedule.xml

task:scheduler id=”myScheduler” pool-size=”10″ /

task:scheduled-tasks scheduler=”myScheduler”

task:scheduled ref=”job” method=”test” cron=”0 * * * * ?”/

/task:scheduled-tasks

3.2注解实现

spring-schedule.xml

task:scheduler id=”myScheduler” pool-size=”10″ /

// 启用注解

task:annotation-driven scheduler=”myScheduler”/

@Component 

public class Task{    

@Scheduled(cron=”0/5 * *  * * ? “)   //每5秒执行一次

public void execute(){  

DateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);  

System.out.println(sdf.format(DateTime.now().toDate())+”*********B任务每5秒执行一次进入测试”);    

}     

}

如何让java定时执行一个方法

现在能想到的是三种方法能实现:

1、普通thread实现

:是最常见的,创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果。

2、timertask

:启动和去取消任务时可以控制,第一次执行任务时可以指定你想要的delay时间。

3、scheduledexecutorservice实现

:最理想的定时任务实现方式,相比于timer的单线程,它是通过线程池的方式来执行任务的,可以很灵活的去设定第一次执行任务delay时间,提供了良好的约定,以便设定执行的时间间隔等。

希望能帮到你。

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

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

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

2   用Timer和TimerTask与第一种方法相比有如下好处:

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

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

3   用ScheduledExecutorService是从的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式,相比于上两个方法,它有以下好处:

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

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

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

原创文章,作者:SOCF,如若转载,请注明出处:https://www.506064.com/n/146004.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
SOCF的头像SOCF
上一篇 2024-10-29 18:57
下一篇 2024-10-29 18:57

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Ojlat:一款快速开发Web应用程序的框架

    Ojlat是一款用于快速开发Web应用程序的框架。它的主要特点是高效、易用、可扩展且功能齐全。通过Ojlat,开发人员可以轻松地构建出高质量的Web应用程序。本文将从多个方面对Oj…

    编程 2025-04-29
  • Zlios——一个多功能的开发框架

    你是否在开发过程中常常遇到同样的问题,需要不断去寻找解决方案?你是否想要一个多功能、易于使用的开发框架来解决这些问题?那么,Zlios就是你需要的框架。 一、简介 Zlios是一个…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29

发表回复

登录后才能评论