8 Ağustos 2019 Perşembe

SimpleTimeLimiter Sınıfı

callWithTimeout metodu
Örnek
Şöyle yaparız.
new SimpleTimeLimiter().callWithTimeout(new Callable(){
   @Override
   public Object call() {
    ...
   }, callTimeout, TimeUnit.MILLISECONDS, true);
Örnek
Şöyle yaparız.
TimeLimiter limiter = new SimpleTimeLimiter();
String result = limiter.callWithTimeout(new Callable<String>() {
    public String call() {
      return getStaticJsonResponse("build", "post");
    }
  }, 3, TimeUnit.SECONDS, false);

ThreadFactoryBuilder Sınıfı

build metodu
Şöyle yaparız.
ThreadFactory namedThreadFactory = 
  new ThreadFactoryBuilder().setNameFormat("my-sad-thread-%d").build()
setDaemon metodu
Şöyle yaparız.
ExecutorService executor= Executors.newSingleThreadExecutor(new ThreadFactoryBuilder()
  .setNameFormat("name")  .setDaemon(true)  .build());
setNameFormat metodu
Şöyle yaparız.
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
  .setNameFormat("UseCountDownLatch").build();
Diğer
Örnek
Bu sınıf Executors ile kullanılır. Şöyle yaparız.
Executors.newSingleThreadExecutor(namedThreadFactory).submit(someRunnable);
Örnek
Bu sınıf ThreadPoolExecutor ile kullanılır. Şöyle yaparız.
ThreadPoolExecutor executor = new ThreadPoolExecutor(
                10,
                10,
                100,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(1),
                namedThreadFactory);

24 Temmuz 2019 Çarşamba

MutableClassToInstanceMap Sınıfı

Giriş
A.class sınıfından kalıtan nesneleri saklamak içindir. Map<A.class,MyOtherType> tarzı A ile kalıtım ilgisi olmayan value tiplerde kullanımı uygun değil.


get metodu
Şöyle yaparız.
<T extends RestClientInterface> T getInstance(Class<T> type) {
  return map.getInstance(type);
}
of metodu
Şöyle yaparız.
ClassToInstanceMap<RestClientInterface> map = MutableClassToInstanceMap.create();

17 Temmuz 2019 Çarşamba

FutureCallback Arayüzü

Giriş
ListenableFuture bitince tetiklenir. Bu metodlar işi tetikleyen yani threadpool'a execute çağrısı yapan thread içinde çalışır. Açıklaması şöyle
This is still better than the guava default of MoreExecutors.directExecutor() where its done in the thread that invokes execute..
onFailure metodu
Şöyle yaparız.
ListenableFuture<?> future = executor.submit(runnable);

FutureCallback<?> callback = new FutureCallback() {

   @Override
   public void onSuccess(Object result) {}

   @Override
   public void onFailure(Throwable t) {}

};

Futures.addCallback(future, callback, executor);
onSuccess metodu
Şöyle yaparız.
return new FutureCallback<List<Grandparents>>() {
  @Override
  public void onSuccess(List<Grandparents> grandparents) {
   
    for(grandparent g : grandparents) {
      ...
    }
  }
}

12 Temmuz 2019 Cuma

UnsignedLongs Sınıfı

parseUnsignedLong metodu
Belirtilen string'i long olarak verir.

toString metodu
Şöyle yaparız.
String formatted = UnsignedLongs.toString(myLongValue);