日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

时间表达式java定时器_java--定时器

發布時間:2023/11/30 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 时间表达式java定时器_java--定时器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

springboot中簡單定時任務使用:Scheduled

1-導入依賴

org.springframework

spring-context-support

6.0.2.RELEASE

2-編寫定時器類

/**

* 定時任務

*/

@Component

public class ScheduledDemo {

/**

* 定時任務

* @Scheduled 設置定時任務

* 1--cron屬性:cron表達式,定時任務觸發時間的一個字符串表達形式

*/

@Scheduled(cron = "0/2 * * * * ?")

public void scheduledMethod(){

System.out.println("定時器觸發:"+new Date());

}

}

說明

* Cron,表達式是一個字符串,分為6或7個域,每一個域代表一個含義Cron有如下兩種語法格式:

* (1)Seconds Minutes Hours Day Month Week Year

* (2) Seconds Minutes Hours Day Month Week

* 位置 時間域名 允許值 允許的特殊字符

* 1 秒 0-59 , _ * /

* 2 分鐘 0-59 , _ * /

* 3 小時 0-23 , _ * /

* 4 日期 1-31 , _ * / L W C 需配合月使用

* 5 月 1-12 , _ * /

* 6 星期 1-7 , _ * / ? L C # 1表示星期日,7表示星期一 星期也要配合日使用,一般只用一個

* 7 年(可選) 1970-2099 , _ * /

星號(*):可用在所有字段中s表示對應時間城的每一個時刻s例如s在分鐘字段時,表示"每分鐘";

問號(?)∶該字符只在日期和星期字段中使用,它通常指定為"無意義的值",相當于占位符﹔

減號(-):表達一個范圍,如在小時字段中使用"10-12",則表示從10到12點,即10,11,12;

逗號(,):表達一個列表值,如在星期字段中使用"MON,WED,FRI",則表示星期一,星期三和星期五;

斜杠(/): xly 表達一個等步長序列s×為起始值,y為增里步長值。如在分鐘字段中使用0/15,則表示為0,15,30和45秒,而5/15在分鐘字段中表示 5,20,35,50,你也可以使用/y,它等同于0/y3

L:該字符只在日期和星期字段中使用,代表""Last"的意思,但它在兩個字段中意思不同。" +

L在日期字段中,表示這個月份的最后一天,如一月的31號,非i閏年二月的28號;

如果L用在星期中,則表示星期六,等同于7○但是,如果L出現在星期字段里,

而且在前面有一個數值X,則表示"這個月的最后X天"”,例如,6L表示該月的最后星期五﹔

W:該字符只能出現在日期字段里,是對前導日期的修飾,表示離該日期最近的工作日。

例如15W表示離該月15號最近的工作日,

如果該月15號是星期六,則匹配14號星期五﹔

如果15日是星期日,則匹配16號星期一﹔

如果15號是星期二,那結果就是15號星期二,但必須注意關聯的匹配日期不能夠跨月,

如你指定1W,如果1號是星期六,結果匹配的是3號星期一,

而非上個月最后的那天。W字符串只能指定單一日期。而不能指定日期范圍;

LW組合:在日期字段可以組合使用LW,它的意思是當月的最后一個工作日;

井號(#):該字符只能在星期字段中使用v表示當月某個工作日 如6#3表示當月的第三個星期五(6表示星期五,#3表示當前的第三個),而4#5表示當月的第五個星期三,假設當月沒有第五個星期三,忽略不觸發;

C:該字符只在日期和星期字段中使用,代表"Calendar"的意思。

它的意思是計劃所關聯的日期,如果日期沒有被關聯,則相當于日歷中所有日期

例如5C在日期字段中就相當于日歷5日以后的第一天o1C在星期字段中相當于星期日后的第一天。

Cron表達式對特殊字符的大小寫不敏感,對代表星期的縮寫英文大小寫也不敏感。

3-啟動類開啟定時任務的使用

@SpringBootApplication

@EnableScheduling

public class Sb1Application {

public static void main(String[] args) {

SpringApplication.run(Sb1Application.class, args);

}

}

第三方定時任務框架:Quartz

1--job 任務 你要做啥

2--Trigger 觸發器 你什么時候去做

3--Scheuler 任務調度 你什么時候需要去做什么事

基本使用

1-導入依賴添加坐標

org.quartz-scheduler

quartz

2.2.1

2-定義class繼承job重寫execute方法,即定義任務類編寫任務

public class QuartzDemo implements Job {

/**

* 任務被觸發是所執行的方法

* @param jobExecutionContext

* @throws JobExecutionException

*/

public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

System.out.println("quartz自動任務--cexcute方法執行。。。"+new Date());

}

}

3-編寫調度類測試

import org.quartz.*;

import org.quartz.impl.StdSchedulerFactory;

public class QuartzMain {

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

//1-先創建job對象:做什么

JobDetail job = JobBuilder.newJob(QuartzDemo.class).build();

//2-創建Trigger對象:什么時間做

/**

* 簡單的trigger觸發時間: 通過quartz提供一個方法來完成簡單的重復調用

* cron Trigger: 按照cron的表達式來給定觸發時間

*/

Trigger trigger = TriggerBuilder.newTrigger()

// .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever())//通過內置方法設置定時 知己即每秒鐘重復

.withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) //通過cron表達式來設置定時

.build();

//3-創建Scheduler對象: 任務調度,什么時候做什么事

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

scheduler.scheduleJob(job,trigger);//設置調度

//啟動

scheduler.start();

}

}

spring整合Quartz

1-引入依賴

org.quartz-scheduler

quartz

2.2.1

slf4j-api

org.slf4j

org.springframework

spring-context-support

6.0.2.RELEASE

org.springframework

spring-tx

6.0.2.RELEASE

2-編寫任務類

import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

import java.util.Date;

public class QuartzDemo implements Job {

/**

* 任務被觸發是所執行的方法

* @param jobExecutionContext

* @throws JobExecutionException

*/

public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

System.out.println("quartz自動任務--cexcute方法執行。。。"+new Date());

}

}

3-創建配置類返回相應對象

import com.xiaoai.quartz.QuartzDemo;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.scheduling.quartz.JobDetailFactoryBean;

import org.springframework.scheduling.quartz.SchedulerFactoryBean;

import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;

/**

* quartz配置類

*/

@Configuration

public class QuartzConfig {

/**

* 1- 創建job對象

*/

@Bean

public JobDetailFactoryBean jobDetailFactoryBean(){

JobDetailFactoryBean factory = new JobDetailFactoryBean();

//關聯自己的job類

factory.setJobClass(QuartzDemo.class);

return factory;

}

/**

* 2- 創建Trigger對象

*/

@Bean

public SimpleTriggerFactoryBean simpleTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean){

SimpleTriggerFactoryBean factory = new SimpleTriggerFactoryBean();

//關聯jobdetail對象

factory.setJobDetail(jobDetailFactoryBean.getObject());

//設置一個執行的毫秒數

factory.setRepeatInterval(2000);

//重復次數

factory.setRepeatCount(5);

return factory;

}

/**

* 1- 創建Scheduler對象

*/

@Bean

public SchedulerFactoryBean schedulerFactoryBean(SimpleTriggerFactoryBean simpleTriggerFactoryBean){

SchedulerFactoryBean factory = new SchedulerFactoryBean();

//關聯Trigger

factory.setTriggers(simpleTriggerFactoryBean.getObject());

return factory;

}

}

4-啟動類開啟定時任務

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication

@EnableScheduling //開啟定時任務

public class quartzdemoApplication {

public static void main(String[] args) {

SpringApplication.run(quartzdemoApplication.class, args);

}

}

可以在配置類中返回一個cron實例,實現通過cron表達式設置定時

import com.xiaoai.quartz.QuartzDemo;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.scheduling.quartz.CronTriggerFactoryBean;

import org.springframework.scheduling.quartz.JobDetailFactoryBean;

import org.springframework.scheduling.quartz.SchedulerFactoryBean;

import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;

/**

* quartz配置類

*/

@Configuration

public class QuartzConfig {

/**

* 1- 創建job對象

*/

@Bean

public JobDetailFactoryBean jobDetailFactoryBean(){

JobDetailFactoryBean factory = new JobDetailFactoryBean();

//關聯自己的job類

factory.setJobClass(QuartzDemo.class);

return factory;

}

/**

* 2- 創建Trigger對象

*/

// @Bean

// public SimpleTriggerFactoryBean simpleTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean){

// SimpleTriggerFactoryBean factory = new SimpleTriggerFactoryBean();

// //關聯jobdetail對象

// factory.setJobDetail(jobDetailFactoryBean.getObject());

// //設置一個執行的毫秒數

// factory.setRepeatInterval(2000);

// //重復次數

// factory.setRepeatCount(5);

// return factory;

// }

/**

* cron trigger

*/

@Bean

public CronTriggerFactoryBean cronTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean){

CronTriggerFactoryBean factory = new CronTriggerFactoryBean();

//關聯job

factory.setJobDetail(jobDetailFactoryBean.getObject());

//設置觸發時間

factory.setCronExpression("0/2 * * * * ?");

return factory;

}

/**

* 1- 創建Scheduler對象

*/

@Bean

public SchedulerFactoryBean schedulerFactoryBean(CronTriggerFactoryBean cronTriggerFactoryBean){

SchedulerFactoryBean factory = new SchedulerFactoryBean();

//關聯Trigger

factory.setTriggers(cronTriggerFactoryBean.getObject());

return factory;

}

}

job類對象注入

總結

以上是生活随笔為你收集整理的时间表达式java定时器_java--定时器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。