package Ġcom . sk hed uler . core . engine Ċ Ċ import Ġcom . sk hed uler . core . api . Task Schedule Repository Ċ import Ġcom . sk hed uler . core . domain . Sk hed ule Ċ import Ġcom . sk hed uler . core . domain . Sk hed ule Registry Ċ import Ġcom . sk hed uler . core . domain . Task Schedule Ċ import Ġjava . time . Instant Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Executors Ċ import Ġkotlin . concurrent . schedule At Fixed Rate Ċ Ċ object ĠSk hed ule Manager Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġexecutor Ġ= ĠExec utors . new Fixed ThreadPool ( 4 ) ĊĊĠĠĠ Ġfun Ġspawn () Ġ{ ĊĠĠĠĠĠĠĠ ĠTimer (). schedule At Fixed Rate ( 0 , Ġ 1 _ 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Sp aw ning ... ${ Instant . now () }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠSk hed ule Registry . list (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecutor . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġtask ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( task . is TimeTo Run ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . task () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠInstant . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Task Ġ= ĠTask Schedule ( task . id , Ġfalse , Ġnow , Ġit . schedule . next ( now )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Schedule Repository . save ( new Task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtask ( sk hed ule : ĠSk hed ule ) Ġ: ĠTask Schedule Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠTask Schedule Repository . find ( sk hed ule . name ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif ( task Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Task Ġ= ĠTask Schedule ( sk hed ule . name , Ġfalse , Ġnull , Ġsk hed ule . schedule . next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTask Schedule Repository . save ( new Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Task ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }