Selector
- Java kursu
- Uzman
- Ders 15/46
- 5 dk
Selector ile çoklu kanal yönetimini öğrenirsin.
Selector ile çoklama
Selector (seçici), tek bir iş parçacığıyla birden çok kanalı izlemeyi sağlar. Kanallar SelectionKey ile seçiciye kaydedilir; select çağrısı hazır olan kanalları bekler. Bu, çoklama (multiplexing) olarak bilinir.
Örnek: bir sunucu, yüzlerce istemci kanalını tek bir Selector ile izleyebilir. Her kanal bloklamayan moda alınır ve seçiciye kaydedilir. select geri döndüğünde hazır kanalların anahtarları işlenir. Bu, her istemci için ayrı iş parçacığı açmaktan çok daha verimlidir.
Bloklamayan kanal
Selector kullanmak için kanalın bloklamayan (non-blocking) modda olması gerekir. channel.configureBlocking(false) bunu sağlar. Ardından kanal bir seçiciye register ile kaydedilir ve hangi olayları izleyeceği belirtilir.
Örnek: channel.register(sel, SelectionKey.OP_READ). Bu, kanalın okumaya hazır olmasını bekler. select döndüğünde, hazır anahtarlar üzerinden channel alınır ve veri işlenir. Bloklayıcı bir kanal seçiciye kaydedilemez; bu yüzden mod ayarı zorunludur.
Uygulama Selector aç ve durumunu yazdır
Selector.open() ile bir seçici aç ve sel değişkenine ata. sel.isOpen() sonucunu System.out.println ile yazdır. Sonra sel.close() ile kapat.
Başlangıç kodu
// Selector aç
// isOpen ile durum yazdır
// kapatÖrnek çözüm
import java.nio.channels.Selector;
public class SelectorDemo {
public static void main(String[] args) throws Exception {
Selector sel = Selector.open();
System.out.println(sel.isOpen());
sel.close();
}
}Beklenen çıktı
true
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Selector.open çağrısını tamamla
Selector sel = Selector.____();
Selector sel = Selector.open();
Açıklama: Selector.open yeni bir seçici açar.
2 Selector kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
Selector.open |
Seçici açar |
select |
Olay bekler |
isOpen |
Durum sorar |
close |
Seçici kapatır |
3 Selector neyi sağlar?
- Dosya silme
- Tek örnek
- Dizgi kodlama
- Tek iş parçacığıyla çok kanal izleme Doğru cevap
Açıklama: Selector, tek iş parçacığıyla çok kanalı izler.