日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java定時(shí)任務(wù)實(shí)現(xiàn)的4種方式小結(jié)

瀏覽:19日期:2022-08-23 14:21:49

1. java自帶的Timer

Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() {System.out.println('Time’s up!'); } },3*1000,1000);

2.ScheduledThreadPool-線程池

ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(2); scheduledThreadPool.scheduleAtFixedRate(new Runnable() { @Override public void run() {System.out.println('========================='); } }, 1000, 2000, TimeUnit.MILLISECONDS); scheduledThreadPool.scheduleAtFixedRate(new Runnable() { @Override public void run() {System.out.println(System.currentTimeMillis()+'<><>'+System.nanoTime()); } }, 1000, 2000, TimeUnit.MILLISECONDS);

3.使用注解的形式:@Scheduled

@Componentpublic class SpringScheduled { @Scheduled(initialDelay = 2000,fixedDelay = 5000) public void doSomething() { System.out.println('Spring自帶的Scheduled執(zhí)行了======================='); }} //下面是開(kāi)啟@SpringBootApplication@EnableSchedulingpublic class DemoApplication { public static void main(String[] args) throws InterruptedException { SpringApplication application = new SpringApplication(DemoApplication.class); application.addListeners(new ContextRefreshedEventListener()); application.run(args); }}

4.使用Quartz定時(shí)任務(wù)調(diào)度器

配置

@Configurationpublic class QuartzConfig { @Resource private ScheduleTask scheduleTask; /** * 配置定時(shí)任務(wù)1 * @return */ @Bean(name='firstJobDetail') public MethodInvokingJobDetailFactoryBean firstJobDetail(){ MethodInvokingJobDetailFactoryBean method = new MethodInvokingJobDetailFactoryBean(); // 為需要執(zhí)行的實(shí)體類(lèi)對(duì)應(yīng)的對(duì)象 method.setTargetObject(scheduleTask); // 需要執(zhí)行的方法 method.setTargetMethod('test'); // 是否并發(fā)執(zhí)行 method.setConcurrent(false); return method; } /** * 配置觸發(fā)器1 * @param firstJobDetail * @return */ @Bean(name='firstTrigger') public SimpleTriggerFactoryBean firstTrigger(JobDetail firstJobDetail){ SimpleTriggerFactoryBean simpleBean = new SimpleTriggerFactoryBean(); simpleBean.setJobDetail(firstJobDetail); // 設(shè)置任務(wù)啟動(dòng)延遲 simpleBean.setStartDelay(1000); // 每1秒執(zhí)行一次 simpleBean.setRepeatInterval(1000); //設(shè)置重復(fù)計(jì)數(shù) //simpleBean.setRepeatCount(0); return simpleBean; } /** * 配置Scheduler */ @Bean(name = 'scheduler') public SchedulerFactoryBean schedulerFactoryBean(Trigger firstTrigger){ SchedulerFactoryBean factoryBean = new SchedulerFactoryBean(); factoryBean.setTriggers(firstTrigger); return factoryBean; } }

要執(zhí)行的任務(wù)

@Componentpublic class ScheduleTask { public void test() { System.out.println('===================================='); } }

總結(jié):

還有其他方式可以實(shí)現(xiàn)定時(shí)任務(wù)的方式,可以貼出來(lái),討論討

補(bǔ)充知識(shí):SpringBoot定時(shí)任務(wù)簡(jiǎn)單使用和自定義開(kāi)啟關(guān)閉修改周期

一、簡(jiǎn)單使用

1.pom加入基本springboot基本的starter即可

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>

2.@Scheduled 參數(shù)可以接受兩種定時(shí)的設(shè)置,一種是我們常用的cron='*/6 * * * * ?',一種是 fixedRate = 6000,兩種都表示每隔六秒打印一下內(nèi)容。

fixedRate 說(shuō)明

@Scheduled(fixedRate = 6000) :上一次開(kāi)始執(zhí)行時(shí)間點(diǎn)之后6秒再執(zhí)行

@Scheduled(fixedDelay = 6000) :上一次執(zhí)行完畢時(shí)間點(diǎn)之后6秒再執(zhí)行

@Scheduled(initialDelay=1000, fixedRate=6000) :第一次延遲1秒后執(zhí)行,之后按fixedRate的規(guī)則每6秒執(zhí)行一次

@Componentpublic class TimingTask { private static final SimpleDateFormat dateFormat = new SimpleDateFormat('HH:mm:ss'); @Scheduled(cron='*/6 * * * * ?') private void process(){ System.out.println('this is scheduler task runing '+new Date()); } @Scheduled(fixedRate = 6000) public void reportCurrentTime() { System.out.println('現(xiàn)在時(shí)間:' + dateFormat.format(new Date())); }}

3.啟動(dòng)類(lèi)加上@EnableScheduling注解。

@SpringBootApplication(exclude = MongoAutoConfiguration.class)@EnableSchedulingpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }

4.運(yùn)行結(jié)果

this is scheduler task runing Thu Jul 18 10:59:06 CST 2019現(xiàn)在時(shí)間:10:59:10this is scheduler task runing Thu Jul 18 10:59:12 CST 2019現(xiàn)在時(shí)間:10:59:16this is scheduler task runing Thu Jul 18 10:59:18 CST 2019現(xiàn)在時(shí)間:10:59:22this is scheduler task runing Thu Jul 18 10:59:24 CST 2019現(xiàn)在時(shí)間:10:59:28

以上就是定時(shí)任務(wù)的簡(jiǎn)單使用。但是有時(shí)候,定時(shí)任務(wù)需要關(guān)閉,和開(kāi)啟,或者修改定時(shí)任務(wù)的運(yùn)行周期,可以使用下面的方式實(shí)現(xiàn).

二、高級(jí)使用,自定義定時(shí)任務(wù),關(guān)閉,開(kāi)啟,修改周期

1.說(shuō)明

ThreadPoolTaskScheduler:線程池任務(wù)調(diào)度類(lèi),能夠開(kāi)啟線程池進(jìn)行任務(wù)調(diào)度。

ThreadPoolTaskScheduler.schedule()方法會(huì)創(chuàng)建一個(gè)定時(shí)計(jì)劃ScheduledFuture,在這個(gè)方法需要添加兩個(gè)參數(shù),Runnable(線程接口類(lèi)) 和CronTrigger(定時(shí)任務(wù)觸發(fā)器)

在ScheduledFuture中有一個(gè)cancel可以停止定時(shí)任務(wù)。

@RestController@RequestMapping('/time')public class DynamicScheduledTask { private static String DEFAULT_CRON = '0/5 * * * * ?'; @Autowired private ThreadPoolTaskScheduler threadPoolTaskScheduler; private ScheduledFuture<?> future; @Bean public ThreadPoolTaskScheduler threadPoolTaskScheduler() { return new ThreadPoolTaskScheduler(); } @RequestMapping('/{id}/startCron') public String startCron(@PathVariable('id') String id) { future = threadPoolTaskScheduler.schedule(new MyRunnable(), new CronTrigger(DEFAULT_CRON)); System.out.println('DynamicTask.startCron()'+'------'+id); return 'startCron'; } @RequestMapping('/{id}/stopCron') public String stopCron(@PathVariable('id') String id) { if (future != null) { future.cancel(true); } System.out.println('DynamicTask.stopCron()'+'------'+id); return 'stopCron'; } @RequestMapping('/{id}/changeCron10') public String startCron10(@PathVariable('id') String id) { stopCron(id);// 先停止,在開(kāi)啟. future = threadPoolTaskScheduler.schedule(new MyRunnable(), new CronTrigger('*/10 * * * * *')); System.out.println('DynamicTask.startCron10()'+'------'+id); return 'changeCron10'; } private class MyRunnable implements Runnable { @Override public void run() { System.out.println('DynamicTask.MyRunnable.run(),' + new Date()); } }}

如果想,做成后臺(tái)管理,添加刪除定時(shí)任務(wù),可以將定時(shí)任務(wù),持久化到數(shù)據(jù)庫(kù),自定義開(kāi)發(fā)MyRunnable定時(shí)任務(wù)的業(yè)務(wù)類(lèi),也持久化到數(shù)據(jù)庫(kù),然后,threadPoolTaskScheduler.schedule要的業(yè)務(wù)類(lèi),可通過(guò)反射實(shí)例化出來(lái),傳遞,然后,通過(guò)url,id參數(shù),來(lái)開(kāi)啟,關(guān)閉,刪除,對(duì)應(yīng)的定時(shí)任務(wù)。

以上這篇java定時(shí)任務(wù)實(shí)現(xiàn)的4種方式小結(jié)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
图片区亚洲欧美小说区| 亚洲成av人片一区二区密柚| 精品中文字幕一区二区三区av| 久久av超碰| 里番精品3d一二三区| 美女毛片一区二区三区四区最新中文字幕亚洲 | 欧美日韩一视频区二区| 日韩精品一级二级 | 国产色综合网| 久久青草久久| 久久精品国产免费| 国产精品亚洲欧美日韩一区在线 | 日本韩国欧美超级黄在线观看| 精品理论电影在线| 久久性天堂网| 成人精品动漫一区二区三区| 国产精品毛片aⅴ一区二区三区| 亚洲精品伊人| 欧美日本三区| 91偷拍一区二区三区精品| 秋霞影视一区二区三区| 一区二区自拍| 日本精品在线播放| 久久av免费看| 久久九九电影| 日韩在线一二三区| 日韩激情一二三区| 精品一区二区男人吃奶| 亚洲免费福利| 黑丝美女一区二区| 亚洲精品欧洲| 国产精品66| 日韩成人精品一区| 在线日韩av| 婷婷精品在线观看| 久久影院资源站| 久久亚洲国产| 亚洲精品一区二区在线播放∴| 国产精品一线| 99视频精品全部免费在线视频| 亚洲视频电影在线| 国产精品15p| 群体交乱之放荡娇妻一区二区| 亚洲精品自拍| 亚欧成人精品| 四虎国产精品免费久久| av资源亚洲| 男女男精品视频网| 欧美女激情福利| 99久久久久国产精品| 亚洲高清久久| 宅男噜噜噜66国产日韩在线观看| 欧美激情三区| 国产日韩欧美在线播放不卡| 欧美国产美女| 中文无码日韩欧| 精品五月天堂| 久久国产人妖系列| 日本不卡一二三区黄网| 97久久中文字幕| 欧美另类中文字幕 | 欧美a级片一区| 91亚洲国产高清| 1000部精品久久久久久久久| 伊人成人网在线看| 免费在线观看视频一区| 精品视频在线一区二区在线| 国产麻豆精品| 国产精品欧美一区二区三区不卡| 欧美午夜网站| 国产图片一区| 欧洲精品一区二区三区| 国产亚洲字幕| 国产综合亚洲精品一区二| 手机精品视频在线观看| 韩国久久久久久| 午夜视频一区二区在线观看| 日本精品不卡| 欧美精品97| 视频一区在线播放| 欧美精品资源| 欧美国产免费| 亚洲日韩视频| 精品一区三区| 亚洲日本网址| 老牛国内精品亚洲成av人片| 亚洲精品高潮| 亚洲欧洲一区| 国产精品精品| 国产精品s色| 日韩动漫一区| 综合一区av| 先锋影音久久久| 欧美 日韩 国产精品免费观看| 精品国产一区二区三区av片| 欧美亚洲免费| 日韩高清欧美激情| 亚洲人www| 性色一区二区| 欧美在线亚洲| 国产在线日韩| 欧美亚洲在线日韩| 精精国产xxxx视频在线野外| 国产精品亚洲成在人线| 日韩欧乱色一区二区三区在线| 国产模特精品视频久久久久| 偷拍欧美精品| 亚洲精品一区二区在线看| 亚洲成人av观看| 在线天堂资源www在线污| 精品不卡一区| 久久精品九色| 久久精品免费看| 久久成人高清| 欧美激情99| 麻豆国产精品| 国产精品4hu.www| 国产精品白丝一区二区三区| 91精品麻豆| 国产亚洲精品美女久久 | 国产乱人伦丫前精品视频| 四虎精品一区二区免费| 日韩中出av| 日韩精品社区| 日韩精品高清不卡| 日本国产一区| 欧美久久一区二区三区| 国产精品自拍区| 国产精品视频首页| 麻豆精品蜜桃视频网站| 高清av一区| 欧洲av不卡| 久久精品1区| 亚洲欧洲另类| 美国三级日本三级久久99 | 四虎在线精品| 国产欧美自拍一区| 精品亚洲成人| 精品日产乱码久久久久久仙踪林| 国产精品2区| 国产一区国产二区国产三区| 日韩在线免费| 樱桃成人精品视频在线播放| 男女性色大片免费观看一区二区| 视频精品一区| 国产精品v一区二区三区| 成人国产精品| 激情综合自拍| 中文视频一区| 国产精品色婷婷在线观看| 国产91在线播放精品| 91精品国产福利在线观看麻豆| 亚洲一区二区三区免费在线观看| 亚洲在线一区| 国产欧美日韩免费观看| 亚洲精品**中文毛片| 狠狠色综合网| 日韩二区三区四区| 欧美少妇精品| 国产婷婷精品| 欧美天堂一区二区| 综合日韩av| 三级欧美在线一区| 国产精品分类| 91精品一区国产高清在线gif| 国产亚洲福利| 国产精品一区二区美女视频免费看| 日韩av在线中文字幕| 欧美69视频| 97久久精品| 精品三级久久| 午夜视频一区二区在线观看| 国产一区二区三区日韩精品| 一区在线免费观看| 国产极品模特精品一二| 99久久亚洲精品蜜臀| 水野朝阳av一区二区三区| 久久久精品五月天| 色婷婷亚洲mv天堂mv在影片| 国产日韩欧美中文在线| 亚洲色图网站| 午夜日韩在线| 尤物在线精品| 久久国产日韩| 欧美大黑bbbbbbbbb在线| 亚洲国产欧美日本视频| 三上悠亚国产精品一区二区三区| 国产成人精选| 韩日一区二区| 国产99亚洲| 日韩欧美激情电影| 国产日产一区| 老司机久久99久久精品播放免费| 亚洲va久久| 国产91在线播放精品| 日本中文字幕视频一区| 欧美成a人免费观看久久| 亚洲精品一二三区区别| 97精品97| 婷婷激情图片久久|