25 Mart 2021 Perşembe

ScheduledExecutorService Arayüzü Single Shot Timer Metodları

Giriş
schedule() metodu ile delay verme imkanı var.
submit() metodu ile delay 0 kabul edilir.
 
schedule metodu - Callable
İmzası şöyle.
@Override
public < V > ScheduledFuture< V > schedule(final Callable< V > callable,final long delay,
  final TimeUnit unit);
Örnek
Şöyle yaparız
ScheduledExecutorService service = Executors.newScheduledThreadPool(2);
//run the task after 1 second ScheduledFuture<String> future = service.schedule(() -> "Hello",1,TimeUnit.SECONDS); //blocks until the thread has completed and returned result String retVal = future.get(); System.out.println(retVal); service.shutdown();
schedule metodu - Runnable + delay + TimeUnit
İmzası şöyle.
@Override
public ScheduledFuture< ? > schedule(final Runnable command,final long delay,
      final TimeUnit unit);
Belirtilen süre sonra işi çalıştırır. 

Örnek
Şöyle yaparız.  Bu metod servis'in kendi thread'i içinden çağrılmamalı.
final long millis = ...;
service.schedule(() -> {
  ...
  }, millis, TimeUnit.MILLISECONDS);
Örnek
Şöyle yaparız
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
//Run a task after a delay of 1 second
service.schedule(() -> System.out.println("Hello"), 1, TimeUnit.SECONDS);
service.shutdown();
submit metodu - Runnable
İmzası şöyle.
@Override
public Future< ? > submit( final Runnable task );
Bu metod klasik bir Executor gibi kuyruğa girer ve bir ara çalıştırılır.
ScheduledExecutorService dataTimer = Executors.newScheduledThreadPool(1);

if(isDynamic)
{
  dataTimer.scheduleAtFixedRate(myRunnable, 0L, 1000, TimeUnit.MILLISECONDS);
}
else
{
  dataTimer.submit(r);
}
submit metodu - Runnable + Result
İmzası şöyle.
@Override
public < T > Future< T > submit(final Runnable task,final T result);

Hiç yorum yok:

Yorum Gönder