spring 定时任务同步,就是同类的任务前一个没有执行完成,即使时间到了,下一个任务也不可以执行,只通退出。一真等到前一个任务完成以后,下个任务才可以执行。
一般用于读文件,同一时间内只能由一个线程进行操作时使用
实现的方式有俩种
今天先介绍第一种
package com.shengyidi.app.task;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class QuartzTestP extends QuartzJobBean {
private static boolean flag = true;
@Override
protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
if (getFlag()) {
testMethod();
flag = true;
} else {
System.out.println(Thread.currentThread().getName() + "out");
}
}
private void testMethod() {
System.out.println("\n\n_______________" + Thread.currentThread().getName() + "_start________________________");
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " " + i);
try {
Thread.currentThread().sleep(30000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("\n\n_______________" + Thread.currentThread().getName() + "_end________________________");
}
private static boolean getFlag() {
synchronized (QuartzJobBean.class) {
if (flag == true) {
flag = false;
return true;
}
}
return flag;
}
}
xml
<bean id="testP"
class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>com.shengyidi.app.task.QuartzTestP</value>
</property>
</bean>
<bean id="test"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="testP" />
</property>
<property name="cronExpression">
<value>0 /1 * * * ?</value>
</property>
</bean>
<!-- runQuartz-->
<bean
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!-- <ref bean="cronReportTrigger1" />
<ref bean="cronReportTrigger2" />
-->
<ref bean="test" />
</list>
</property>
</bean>
测试结果数据
_______________org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-1_start________________________
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-1 0
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-1 1
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-2out
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-1 2
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-1 3
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-3out
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-1 4
_______________org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-1_end________________________
_______________org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-4_start________________________
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-4 0
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-4 1
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-4 2
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-5out
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-4 3
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-4 4
org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-6out
_______________org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-4_end________________________
分享到:
相关推荐
Spring定时任务是Spring框架中的一个强大特性,它允许开发者在应用程序中设置定时任务,以便在预定义的时间间隔执行特定的任务。这个功能对于实现自动化、批处理、数据同步、监控等多种业务场景非常有用。在本篇中,...
Spring Boot作为Java领域的一个热门微服务框架,提供了强大的定时任务功能,能够帮助我们实现不同数据库间的数据同步,比如Oracle到MySQL。本篇文章将详细讲解如何利用Spring Boot的定时任务特性,结合Java的相关...
这个"Spring定时调度简单实现源码"很显然是一个关于如何在Spring中配置和使用定时任务的示例代码包。下面我们将深入探讨Spring的定时调度机制以及其核心组件。 Spring的定时任务调度主要依赖于两个关键组件:`Task...
Spring框架结合Quartz库,提供了一种强大而灵活的方式来管理这些定时任务。本项目旨在演示如何利用Spring和Quartz从数据库中动态加载定时任务,并实现对它们的增删改查功能。以下是关于这个主题的详细知识讲解。 ...
标题 "spring2.0学习笔记+spring定时任务" 暗示了我们即将探讨的是关于Spring框架2.0版本的学习心得以及如何在Spring中配置和使用定时任务。在这个主题下,我们将深入理解Spring的核心概念,特别是它在企业级Java...
Spring 3.0版本引入了对定时任务的支持,这是一个非常实用的功能,可以帮助开发者实现定期执行的任务,如数据同步、报表生成等。本文将深入探讨Spring 3.0中的定时任务实现,并结合Quartz库来进一步扩展定时任务的...
3、SpringCloudSchedule定时任务(使用mybatis读写mysql数据库, spring实现定时任务, 按照间隔时间或固定时间方式执行定时任务) 4、定时自动运行任务(在数据库中设置好定时时间,及运行的程序,及参数) 5、C#...
在Spring框架中,定时任务是通过Spring的Task模块来实现的,这允许我们在应用程序中创建和管理定时任务,而无需依赖外部的调度器如Quartz或Cron。本例主要探讨如何在Spring中配置和执行定时任务。 首先,我们要引入...
当结合Quartz,一个强大的任务调度库,我们可以实现动态的定时任务创建,这在业务逻辑中有着广泛的应用,如数据同步、定时报表生成等。 **Spring框架** Spring框架是Java开发者必备的工具之一。它提供了一个统一的...
邮件服务允许开发者向用户发送电子邮件,而定时任务则可以实现程序的自动化执行,如数据同步、报表生成等。以下将详细介绍这两个方面。 首先,我们来探讨Spring的邮件服务。Spring通过JavaMailSender接口提供了一种...
在IT行业中,定时任务是许多应用不可或缺的一部分,用于执行定期的后台处理,如数据同步、报表生成、清理任务等。Spring Boot作为一个轻量级的Java框架,提供了与各种定时任务库集成的能力,其中Quartz是一个广泛...
本教程将深入探讨如何配置并实现Spring Boot中的定时任务,包括线程配置、并行同步和异步执行等关键概念。 首先,我们需要了解Spring Boot中的定时任务基础。通过添加`@EnableScheduling`注解到某个配置类,我们...
### Spring Boot中的@Scheduled注解:定时任务的原理与实现 #### 一、引言 在现代软件开发中,定时任务是一种非常常见的需求。无论是数据同步、定期清理缓存还是发送提醒邮件,都需要应用程序能够在特定的时间点...
Java Spring Quartz 动态定时任务是企业级应用中常见的需求,用于执行周期性的后台作业,如数据同步、报表生成等。Spring与Quartz的结合使用,使得我们可以方便地在Spring框架下管理定时任务,同时还能实现任务的...
在【标题】"Spring的定时任务开发及对Quartz和Timer支持"中,涉及到的是Spring在处理定时任务方面的特性,这在企业级应用中非常常见,用于执行一些周期性的后台任务,如数据同步、报表生成、清理任务等。 首先,...
在多应用服务器负载均衡环境下,Spring Quartz定时任务的重复执行问题是一个常见的挑战。Spring Quartz是一个强大的、开源的作业调度框架,允许开发者定义和执行复杂的定时任务。然而,当多个服务器实例并行运行时,...
本项目采用`ThreadPoolTaskScheduler`来实现定时任务,这是一种基于Java线程池的定时任务调度器,相比Spring的`@Scheduled`注解,它提供了更灵活的配置和管理方式。 1. **ThreadPoolTaskScheduler介绍** `...
本篇将详细探讨Spring中的定时任务和异步方法,帮助开发者更好地理解如何在项目中实现定时任务调度和提高程序执行效率。 首先,我们来关注Spring的定时任务。Spring提供了`@Scheduled`注解,通过这个注解,我们可以...
这样,我们就能实现通过Spring定时任务启动多线程的目的。 注意,使用多线程需要注意线程安全问题,比如共享资源的访问控制、同步机制以及异常处理。同时,合理配置线程池参数以确保系统的稳定性和性能。 总结起来...