Hallo,
das Aufrufen der select-Methode eines Selectors sollte blockieren, wenn nicht einer der folgenden Fälle vorliegt
* wakeup / interrupt
* close
* channel ausgewählt
Das folgende Beispiel blockiert nicht im letzten select-Aufruf:
Die Ausabe ist wie folgt
warum ist das so? Es ist doch keiner der oben angebenen Fälle zutreffend, oder?
viele Grüße,
Käse
das Aufrufen der select-Methode eines Selectors sollte blockieren, wenn nicht einer der folgenden Fälle vorliegt
* wakeup / interrupt
* close
* channel ausgewählt
Das folgende Beispiel blockiert nicht im letzten select-Aufruf:
Code:
SocketChannel clientChannel = SocketChannel.open();
clientChannel.configureBlocking(false);
clientChannel.connect(new InetSocketAddress("192.168.0.11", 12344));
Selector selector = Selector.open();
clientChannel.register(selector, SelectionKey.OP_CONNECT);
selector.select();
Iterator<SelectionKey> keys = selector.selectedKeys().iterator();
while (keys.hasNext()) {
SelectionKey key = keys.next();
keys.remove();
if (key.isConnectable()) {
clientChannel.finishConnect();
}
}
selector.select();
System.out.println(selector.isOpen());
System.out.println(selector.selectedKeys().size());
Die Ausabe ist wie folgt
Code:
connected
true
0
warum ist das so? Es ist doch keiner der oben angebenen Fälle zutreffend, oder?
viele Grüße,
Käse