Bazı test kodları yazarken, Selector.select() işleminin işlemek için herhangi bir anahtar içermeyen Selector.selectedKeys() olmadan dönebileceğini buldum. Ben ilgi operasyonlar gibiJava NIO select(), seçili tuşlar olmadan döner - neden?
SelectionKey.OP_READ | SelectionKey.OP_CONNECT
ile accept() ed kanalını kayıt olduğunda bu sıkı bir döngü içinde gerçekleşiyor.
Docs göre seçin() ne zaman dönmelidir:
1) üzerine hareket olabilir kanallar vardır.
2) Açıkça Selector.wakeup() çağrısı - hiçbir anahtar seçilir.
3) Açıkça Thread.interrupt() select yapıyor iplik() - hiçbir anahtar seçilir.
select sonra hiç anahtarları alırsanız() Ben durumlarda olmalı (2) ve (3). Ancak, kodum bu dönüşleri başlatmak için wakeup() veya interrupt() çağırmıyor.
bu davranışa neden olan ne olduğu herhangi bir fikir?
Cevabınız için teşekkürler. Bu açıkça seçmenin davranışında bir anormalliktir, ancak kolayca çözülebilir. –
@FrankTaylor Bir programlama hatasının neden 'seçim davranışında bir anormallik' olarak görülmesi gerektiğini bilmiyorum. – EJP