bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

Java定時任務-創新互聯

Java定時任務
  • JDK定時器Timer使用及原理分析
    • 小頂堆
    • 時間輪算法
    • Timer
  • 定時任務線程池解析
    • Schedule
    • Leader-Follower模式
  • 定時任務框架Quartz
    • quartz demo
    • JobDataMap
    • job并發及持久化
    • 觸發器
    • 調度器
    • 整合springboot

成都創新互聯公司主營嵊州網站建設的網絡公司,主營網站建設方案,app軟件定制開發,嵊州h5微信小程序開發搭建,嵊州網站營銷推廣歡迎嵊州等地區企業咨詢JDK定時器Timer使用及原理分析 小頂堆

完全二叉樹:只有最后一層節點數不滿
堆:是一顆完全二叉樹,元素滿足每個節點的值都大于或者小于其父節點的值
數組存儲結構:
小頂堆:最上面的最小
更好的找到父節點是誰,除以2
插入元素、刪除元素

缺點:插入和刪除要移動比較全部的元素,需要耗費大量性能浪費
適合比較偏小量的

時間輪算法

鏈表或者數組實現時間輪:遍歷數組,每個下標放置一個鏈表,鏈表節點放置任務,遍歷到了就取出執行
round型時間輪:任務上記錄一個round,遍歷到了就將round減一,為0時取出執行
缺點:需要遍歷所有的任務,效率較低
分層時間輪:使用多個不同時間維度的輪。天輪記錄幾點執行。月輪記錄幾號執行。月輪遍歷到了。將任務取出放到天輪里面,即可實現幾號幾點執行。

Timer

Timer:任務啟動:new()、任務添加:.schedule()
小頂堆里面添加任務、從小頂堆里獲取最近的任務、獲取當前時間和這個任務下一次要執行的時間,若、要把任務刪除掉重新入隊、預設的時間,任務真正執行時間取決于上一個任務執行完的時間
scheduleAtFixRate():
TimerTask:寫業務邏輯、再啟動線程池去執行
單線程:任務阻塞、任務超時

定時任務線程池解析 Schedule

ScheduledExecutorService scheduledThreadPool = Excutors.newScheduledThreadPool()
scheduleAtFixedRate

Leader-Follower模式

避免沒必要的喚醒和阻塞操作,更有效,更節省資源

定時任務框架Quartz quartz demo

Job:業務邏輯
-JobBuilder、JobDataMap
execute()

JobDetail:Job的包裝
JobBuilder.newJob().withIdentity().build()

Trigger:觸發器
-TriggerBuilder 、JobDataMap、ScheduleBuilder simple、
.startNow()
.withSchedule()

Scheduler:按照觸發器定義的時間去執行Job
-SchedulerFactory:StdSchedulerFactory properties配置
.shcheduleJob(jobDetail,triggerr)

JobDataMap

存儲一些變量

job并發及持久化

Scheduler每次執行,都會根據JobDetail創建一個新的Job實例,這樣就可以規避并發訪問的問題

@DisallowConcurrentExecution:禁止并發地執行同一個job定義的多個實例
前一個任務執行完了,才會執行下一個任務

@PersistJobDataAfterExecution: 將JobDataMap進行持久化

觸發器

優先級:同時觸發的比較優先級
錯過觸發:到達觸發時間時沒有被執行、可以配置延遲的閾值
simple:
cron:

調度器

JobStore
默認存儲在內存中

整合springboot

集群處理。每個節點執行一些任務
節點間互相不通信,通過數據庫來
quartz.properties
QRTZ

配置文件、建表語句

QuartzJobBean
executeInternal(JobExecutionContext context)

SchedulerConfig
Scheduler按照配置文件創建調度器

@Bean
Scheduler scheduler()

@Bean
SchedulerFactoryBean
factory.setSchedulerName(“”)
factory.setDataSource()
factory.setApplicationContextSchedulerContextKey(“applicaiton”)
factory.setQuartzProperties(quartzProperties())
factory.setTaskExecutor(schedulerThreadPool())
factory.setStarter

@Bean
DataSource

@Bean
Executor schedulerThreadPool{
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor
executor.setCorePoolSize
executor.setMaxPoolSize
executor.setQueue

@Bean
Properties quartzProperties()
PropertiesFactoryBean propertiesFactoryBean
propertiesFactoryBean.setLocation(new ClassPathResource(“quartz.properties”))
propertiesFactoryBean.afterpeopertiesSet()
return propertiesFactoryBean.getObject

通過監聽器啟動調度
StarterApplocationListener implements ApplicationListener()

@Autowired
Scheduler

IOC容器啟動起來以后啟動調度
onApplicationEvent(ContextRefreshedEvent event){
TriggerKey triggerKey=TriggerKey.triggerKey()
scheduler.getTrigger(triggerKey);
if(trigger == null) {
trigger=TriggerBuilder.newTrigger()
.withIdentity(triggerKey)
.withSchedule(CronScheduleBuiler.cronSchedule(“0/10 * * * * ?”))
.build();

JobDetail jobDetail = JobBuilder.newJob(QuartzJob.class)
.withIdentity()
.build()

scheduler.scheduleJob(jobDetail,trigger);
sheduler.start();
}

@SpringBootApplication

數據庫里存儲了一些歷史數據

一個JobDetail在一個節點

你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

分享標題:Java定時任務-創新互聯
本文來源:http://vcdvsql.cn/article38/hodpp.html

成都網站建設公司_創新互聯,為您提供移動網站建設網站改版網站排名企業網站制作動態網站網站策劃

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

綿陽服務器托管