6 Mart 2018 Salı

BlockingQueue Arayüzü

Giriş
Şu satırı dahil ederiz.
import java.util.concurrent.BlockingQueue;
Arayüzü gerçekleştiren sınıflardan bazıları ArrayBlockingQueue, LinkedBlockingQueue

constructor
Arayüzü gerçekleştiren sınıflardan birisini kullanabiliriz.
BlockingQueue<Foo> q = new ArrayBlockingQueue<> (200);
add metodu - bloke olmaz, exception fırlatır
Eğer kuyruk doluysa, bloke olmak yerine exception atar. Exception istemiyorsak boolean sonuç dönen offer() kullanılabilir.
Throws: IllegalStateException - if this queue is full
drainTo metodu
Şöyle yaparız.
List<Foo> copy = ...;

// to grab up to 25 elements
q.drainTo (copy, 25);
element metodu - exception fırlatır,
Örnek ver

offer metodu - bloke olmaz, boolean döner
İmzası şöyle. Boolean sonuç yerine exception istiyorsak add() kullanılabilir.
public boolean offer (E e)
Şöyle yaparız. Eğer yer yoksa false döner.
boolean added = q.offer (e);
if (!added) {
  ...Do something
}
peek metodu - null döner
Örnek ver

poll metodu - bloke olmaz, null döner
null yerine exception istiyorsak, remove() kullanılabilir.

put metodu
Şöyle yaparız.
BlockingQueue< Integer > q = ...;
int i = 0;
q.put (i);
remove metodu - bloke olmaz, exception fırlatır
Exception yerine null istiyorsak, poll() kullanılabilir.

take metodu
İmzası şöyle
public E take () throws InterruptedException
Şöyle yaparız. Eğer kuyruk boş ise bloke olur.
Foo request = q.take ();
take metodu null dönemez. Şu kontrolü yapmak kuyruğa özellikle null konulmadıysa zorunlu değil.
if (request == null) {...}


Hiç yorum yok:

Yorum Gönder