Giriş
Şu satırı dahil ederiz.
import org.springframework.scheduling.TaskScheduler;
Bu arayüzü gerçekleştiren sınıflar şöyle
ConcurrentTaskScheduler,
DefaultManagedTaskScheduler,
TimerManagerTaskScheduler
Bu sınıf scheduleXXX() şeklinde metodlar sağlar. Temel amacı bir işin gelecekte çağrılması için teslim edilmesini sağlamak. İşi çalıştıran sınıflar genellikle bir ThreadPool kullandıkları için aynı zamanda TaskExecutor arayüzünü de gerçekleştirirler.
Tanımlama
Örnek
Şöyle yaparız.
schedule metodu - Runnable + Trigger
Trigger arayüzü işin bir sonraki çalışma zamanını hesaplar.
Bu metod ScheduledFuture nesnesi döner.
Örnek
Şöyle yaparız.
Tanımlama
Örnek
Şöyle yaparız.
<task:scheduler id="scheduler" pool-size="10" />
<task:executor id="executor" keep-alive="3600" pool-size="100-200"
queue-capacity="500" rejection-policy="CALLER_RUNS" />
<task:annotation-driven executor="executor" scheduler="scheduler" />
schedule metodu - Runnable + Date
Örnek
Şöyle yaparız
taskScheduler.schedule(() -> ...,new Date(System.currentTimeMillis() + 3000));
Trigger arayüzü işin bir sonraki çalışma zamanını hesaplar.
Bu metod ScheduledFuture nesnesi döner.
Örnek
Şöyle yaparız.
scheduler.schedule(runnable, new CronTrigger("0 15 9-17 * * MON-FRI"));
ÖrnekŞöyle yaparız
scheduleWithFixedDelay metodu@Servicepublic class TaskSchedulingService {@Autowiredprivate TaskScheduler taskScheduler;Map<String, ScheduledFuture<?>> jobsMap = new HashMap<>();public void scheduleATask(String jobId, Runnable runnable String cronExpression) {ScheduledFuture<?> scheduledTask = taskScheduler.schedule(runnable,new CronTrigger(cronExpression,
TimeZone.getTimeZone(TimeZone.getDefault().getID())));jobsMap.put(jobId, scheduledTask);}public void removeScheduledTask(String jobId) {ScheduledFuture<?> scheduledTask = jobsMap.get(jobId);if(scheduledTask != null) {scheduledTask.cancel(true);jobsMap.put(jobId, null);}}}
Örnek
Şöyle yaparız
taskScheduler.scheduleWithFixedDelay(() -> ..., 1000);
Hiç yorum yok:
Yorum Gönder