5 Nisan 2019 Cuma

TimeUnit Sınıfı

Girşi
TimeUnit sınıfı concurrency paket içinde gelse de zaman hesaplaması için kullanılabilir. Ayrıca ChronoUnit sınıfı ile de bazı konularda benzerlik gösteriyor. Java 8 varsa bu sınıfı tercih etmemek gerekir.

Bu sınıfın sanırım en çok kullanılan metodu convert(). Farklı birimler arasında çevrim yapabilmeyi sağlar.

convert metodu
Örnek
Milisaniyeyi güne çevirmek için şöyle yaparız.
long ms = ...;
long noOfDays = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
sleep metodu
Şöyle yaparız.
TimeUnit.SECONDS.sleep(y)
Bu metod Thread.sleep ile aynıdır. Hatta metodun içi şöyledir.
public void sleep(long timeout) throws InterruptedException {
  if (timeout > 0) {
    long ms = toMillis(timeout);
    int ns = excessNanos(timeout, ms);
    Thread.sleep(ms, ns);
  }
}
Metod exception atar. Şöyle kullanmak gerekir.
try
{
  TimeUnit.SECONDS.sleep(1);
}
catch(InterruptedException e)
{...}
Sürekli catch yazmak hoş olmadığı için şöyle basitleştirebiliriz.
public void timeDelay(long t) {
  try {
    TimeUnit.SECONDS.sleep(t);
  } catch (InterruptedException e) {...}
}
toDays metodu
Şöyle yaparız.
long noOfDays = ...;
long a = TimeUnit.DAYS.toDays(noOfDays);
toSeconds
Girdinin kullanılan TimeUnit.X sabit ile aynı olması gerekir.
Örnek
Şöyle yaparız. Girdi nanosaniye biriminden olduğu için NANOSECONDS sabiti kullanılıyor.
NANOSECONDS.toSeconds(elapsedNanoSeconds);
Örnek
İki date arasındaki farkı saniye olarak şöyle buluruz. Girdi milisaniye biriminden olduğu için MILLISECONDS sabiti kullanılıyor.
String str = TimeUnit.MILLISECONDS.toSeconds(date1.getTime() - date2.getTime());

Hiç yorum yok:

Yorum Gönder