27 Ekim 2016 Perşembe

Condition Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.util.concurrent.locks.Condition;
constructor
Şöyle yaparız.
Lock lock = new ReentrantLock();
Condition condition  = lock.newCondition();
await metodu
Şöyle yaparız.
condition.await();
signal metodu
Açıklaması şöyle. Niçin may kelimesi kullanılmış bilmiyorum.
An implementation may (and typically does) require that the current thread hold the lock associated with this Condition when this method is called.
Bekleyen tek bir thread'i uyandırır. Şöyle yaparız.
condition.signal();
signalAll metodu
Bekleyen tüm thread'leri uyandırır.
condition.signalAll();
Consumer
Örnek ver.

Producer
Klasik kullanımı şöyledir.
1. Lock kilitlenir
2. Condition sinyallenir
3. Lock bırakılır
@Override
public void foo (){

  lock.lock();
  try{
    ...
    condition.signalAll();
  } finally{
    lock.unlock();
  }
}


Hiç yorum yok:

Yorum Gönder