Kauj ruam los mus teem lub sij hawm pab raws qib kev siv moj khaum caij nplooj ntoos hlav

Scheduling tasks using Spring framework

Teem caij siv lub caij nplooj ntoos hlav

Txheej txheem cej luam

Cov sij hawm teem tseg thiab tso tseg yog ib qho tseem ceeb feature ntawm tej hom ntaub ntawv los yog programming lus. Java muaj xov pas ntau teg, ua txhawb thiab tiav. Lub caij nplooj ntoos hlav framework yog ib qhov nyiam tshaj plaws qhib qhov chaw qhib nyob hauv lub ntiaj teb ntawm Java raws li enterprise/stand-alone daim ntawv thov. Li ntawd, Nws muaj nws tus kheej abstraction rau concurrent teem tseg thiab tiav.

Nyob rau cov tshooj no, Peb yuav tshawb li cas cov tiav thiab teem sij hawm nyob rau hauv caij nplooj ntoos hlav. Peb kuj yuav xyuas tej lub snippets los nkag siab txog kev siv rau ib txoj kev zoo.








TaskExecutor thiab TaskScheduler?

Ntu no, Peb yuav xyuas TaskExecutor thiab TaskScheduler ib los ntawm ib tug

TaskExEcutor:

Caij nplooj ntoos hlav 2.0 muaj ib tug tshiab abstraction hu ua TaskExEcutor, nws deals nrog executors. Nyob rau hauv Java 5, executors yeej ris pas dej ua ke. Lub caij nplooj ntoos hlav abstraction tshawb xyuas yooj yim siv executors. TaskExecutor interface ntawm lub caij nplooj ntoos hlav yog ib qho zoo rau Java tus executor interface. Nws yog tswvcuab muab qhov chaw ntawm tej pas dej ua ke txawv lub caij nplooj ntoos hlav. Lub caij nplooj ntoos hlav sib txawv TaskExecutor, Yooj yim li SimpleyncTascTaskexecutor, ConcurrentTasKExExutor, ThreadPoolTasKExecutor etc.








Cia peb mus xyuas ib yooj yim yooj yim ntawm TaskExecutor.

Qhia 1: Qauv TaskExecutor siv

pob.eduonix.eduonix.taskeexcutor;

import.springframework.core.task.TaskExecutor;

Pej xeem hoob kawm SampleTasKExecutor {

//Tsim Kev Ntshai Tsam Hoob Kawm

Lwm hoob kawm PrintMesTsk dluab Runnable {

ntiav msg;

Pej xeem PrintMessagesk(Txoj hlua msg) {

qhov no.msg = msg;

}

pej xeem qhib() {

System.out.println(msg);

}

}

//Tsim executor lom zem

ntiav TaskExecutor tskExeqor;

Pej xeem SampleTasKExecutor(TaskExecutor tskExeqor) {

Qhov no.tskExeqor = tskExeqor;

}

//Pib executing threads

Pej xeem tsis txhob printMsg() {

rau(rau cov menyuam kuv = 0; Kuv < 20; i ) {

tskExeqor.execute(PrintMesSagesk(“Lus no: ” + Kuv));

}

}

}


Nyob rau hauv daim ntawv teev cov lus qhia nram qab no, Peb muaj configured ib tug qauv rau cov TaskExecutor. Nyob rau hauv no xml configuration, pas dej ua luaj li cas 6, pas dej ua ke 12 thiab cov queue peev xwm yog 30.

Qhia 2: Qauv cai configuration

<taum daim id =”smptaskExExecutor” hoob =”org.springframework.scheduling.concurrent.ThreadPoolTasKExExcutor”>

<lub npe ntawm tus kheej =”corePoolSize” tus nqi =”6″ />

<lub npe ntawm tus kheej =”maxPoolSize” tus nqi =”12″ />

<lub npe ntawm tus kheej =”queueCapacity” tus nqi =”30″ />

</taum>

<taum daim id =”qauv sampleTaskExEcutor” hoob =”SampleTasKExEcutor”>

<constructor-arg nyob =”smptaskExExecutor” />

</taum>

Yog peb ntsuam xyuas cov qauv codefully (Qhia 1), Peb yuav nkag siab tias tsis muaj riam retrieved thiab tseg los ntawm lub pas dej ua ke. Peb tsuas ntxiv rau runnable siv nyob rau hauv cov queue, thiab tas yog saib xyuas los ntawm txoj cai tswj TaskExecutor. Thiab, nws tswj tag nrho cov threads internally. Nws yog ib tug poj nyem zoo kawg thiab nyem rau lub zej zos developers', Raws li lawv tsis yuav txhawj txog cov kev tswj phem thread.

Taskschuler (TaskS).:

Caij nplooj ntoos hlav 3.0 ua kom paub Taskschuler (TaskS).. Nws yuav pab teem caij kev ua hauj lwm thaum twg kis lub sij hawm yav tom ntej. Nws kuj tuaj cuag nrog nta mus xyuas cov pej xeem raws li txoj cai thiab txawm tias tus neeg ua hauj lwm. Yuav kom siv Taskschuler, Peb yuav tsum npaj ib tug neeg ua hauj lwm runnable thiab xaiv txoj kev mus teem nws.

Nyob rau hauv daim ntawv teev cov lus qhia nram qab no, Peb yuav tau saib txoj kev sib txawv ntawm tus interface.








Qhia 3: Uas qhia txoj kev hauv TaskScheduler interface

pej xeem kev cuam tshuam TaskScheduler {

Teem lub sij hawm teem tseg teem tseg(Runnable ua hauj lwm, ntev);

Teem lub sij hawm teem tseg teem tseg(Runnable ua hauj lwm, Hnub pib, ncua ntev);

Teem lub sij hawm teem tseg teem tseg(Runnable ua hauj lwm, ncua ntev);

Teem caij nyoog teem teem cia ua ntej(Runnable ua hauj lwm, Txhais);

Teem caij nyoog teem teem cia ua ntej(Runnable ua hauj lwm, Hnub pib);

Teem lub sij hawm teem tseg teem tseg(Runnable ua hauj lwm, Hnub pib, ntev);

}

Nyob rau hauv txoj kev saum toj no, yooj yim yog ib qho uas muaj Runnable task thiab hnub. Thiab, Txoj kev muaj Trigger yog txoj ib qho.

Wb muaj saib Triggers raws li nws muaj ib co complex dlua.

Tus Trigger interface yog ib feem ntawm lub caij nplooj ntoos hlav 3.0. Lub tswv yim yooj yim yog tswj lub sij hawm tiav raws li cov sij hawm teev tiav. Lub sij hawm tas los tiav yog qhwv hauv ib TriggerContext. TrigerContext yog ib qho tseem ceeb rau kev cuam tshuam, uas encapulsates tag nrho cov ntaub ntawv hais txog.

Tom qab code snippets qhia tau hais tias tus qauv yooj yim ntawm Trigger thiab TriggerContex interface.

Qhia 4: Uas qhia txoj kev ua txhaum nyob rau hauv kev cuam tshuam

pej xeem interface Trigger {

Hnub tom ntej no ntxiv(TrigerContext triggerContext);

}

Qhia 5: Uas qhia txoj kev hauv TriggerContext interface

pej xeem interface TriggerContext {

Hnub kawg xyaum ua ke();

Hnub dhau Lub Sij Hawm Tas los No();

Hnub kawg Kiag();

}


Dab tsi yog txoj kev uas yuav Techule Tasks (Techule Tasks)?

Nyob rau hauv tshooj no peb yuav xyuas seb hom kev kawm teem tseg yuav siv tau. Peb yuav tsom xam rau sab coding ntawm lub scheduler tasks.

Peb yuav mloog zoo rau cov lus hauv qab no.

  • Teem caij nrog Tas Nrho Ncua
  • Teem caij nrog tas nrho tus nqi
  • Teem caij nrog Cron Trigger

Ua ntej dhia mus rau saum toj no teem tseg, Peb yuav muaj ib nyuag saib ThreadPoolTaskscheduler. ThreadPoolTaskscheduler yog ib txoj kev yooj yim rau kev tswj thiab teem caij. Nws yuav siv lub caij nplooj ntoos hlav TaskExecutor interface. Os, Piv txwv li ib zaug xwb yog siv rau cov asynchronous tiav thiab teem tseg.

Teem caij nrog ncua qeeb

Muaj ob txoj kev sib txawv rau lub sij hawm Runnable task uas muaj qeeb.

  • Tas nrho qeeb tom qab tau tiav tas los no.

tskscheduler.scheduleWithFixedDelay(

RunnableTask(“Tas ncua qeeb 2 thib ob”), 2000);

  • Tas ncua qeeb tom qab ib hnub tim.

tskscheduler.scheduleWithFixedDelay(

RunnableTask(“Ncua 2 xis nkoos tom qab hnub tam sim no”),

Hnub tshiab(),

2000);

Teem caij nrog tas nrho tus nqi

Ntawm no kuj, Ob txoj kev sib txawv uas muaj cov teem tasks nrog rau tus nqi tsawg.

  • Teem caij nrog ib tug naj npaum li cas

tskscheduler.scheduleAtFixedRate(

RunnableTask(“Teem tau nrog tas npaum li cas 3 vib nas this”) , 3000);

  • Teem caij nrog ib tug nqi tas ib hnub twg.

tskscheduler.scheduleAtFixedRate(RunnableTask(

“Teem tau nrog tas npaum li cas 4 vib nas this”), Hnub tshiab(), 4000);

Teem caij nrog cron txhais

CronTrigger yog lub complex qhov xwm. Nws yuav pab teem tau ib txoj hauj lwm raws li ib tug cron expression.

CronTrigger crnTrigger

= CronTrigger(“0 0 6 * * ?”);

tskschuler.schedule(RunnableTask(“Cron Trigger”), crnTger);

Cov hauj lwm saum toj no yuav khiav 6AM txhua thaum sawv ntxov li ib tug cron ntxov.

Yuav tsum nyeem – Nyiam springing framework raws li cov txheej txheem

Xaus

Tsab xov xwm no yog txog cov tswvyim qab lub caij nplooj ntoos hlav TaskExecutor thiab Taskscheduler. Nws piav tag nrho cov ntsiab lus tseem ceeb thiab lawv siv lus. Txoj kev luv no yuav muab ib lub tswv yim thiab pab koj kom peb tes num nyob rau hauv koj qhov project.

============================================= ============================================== Yuav zoo TechAlpine phau ntawv rau Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Txaus siab rau qhov blog? Tshaj tawm lus thov :)

Follow by Email
LinkedIn
LinkedIn
Share