10 Ocak 2021 Pazar

CompletableFuture.complete - İşin Belirtilen Değer İle Bitmesini Sağlar

Giriş 
Açıklaması şöyle. Bu metod herhangi bir thread içinden çağrılabilir.
it can be completed from any thread that wants it to complete.
Şöyle yaparız.
CompletableFuture<String> f = new CompletableFuture<>();
f.complete (...);
bu metod çalışmakta olan bir CompletableFuture işinin hemen bitmesine de sebep olabilir.
Örnek
Elimizde şöyle bir kod olsun
public static void main(String[] args) {
  CompletableFuture<String> cf = CompletableFuture.supplyAsync(() -> {
    System.out.println("started work");
    LockSupport.parkNanos(TimeUnit.SECONDS.toNanos(5));
    System.out.println("done work");
    return "a";
  });

  LockSupport.parkNanos(TimeUnit.SECONDS.toNanos(1));
  cf.complete("b");
  System.out.println(cf.join());
}
Çıktı olarak şunu alırız. Burada çalışmakta olan CompletableFuture nesnesinin sonucunun - yani "a" değerinin" - gelmediği görülebilir.
started work
b
 

Hiç yorum yok:

Yorum Gönder