Ich habe sequentiellen Single-Threaded-Algorithmus wie diese jetzt schreiben:Wie multithreaded Algorithmus zur Entdeckung verfügbar Buchse
boolean conn = false;
for (InetSocketAddress addr : addrs) {
while (!conn) {
SocketChannel ch = SocketChannel.open();
ch.configureBlocking(true);
ch.socket().setTcpNoDelay(tcpNoDelay);
ch.socket().setKeepAlive(true);
try {
ch.socket().connect(addr, connTimeout);
conn = true;
....
}
catch (...) {
log("Not available: " + addr);
}
if (conn)
break;
}
}
Aber in manchen Situationen konnte ich in der seine recht große Liste von Adressen und verfügbare Adresse haben könnte Ende dieser Liste - dies führt zu einer langsamen Erkennung der verfügbaren Adresse, da ich alle Adressen einzeln überprüfen muss.
Also meine Frage - wie könnte ich Algorithmus implementieren, der versuchen wird, mit mehreren Adressen aus verschiedenen Threads zu verbinden und wird beendet, sobald die erste verfügbare Adresse gefunden wird?
Auch dieser Algorithmus sollte beendet werden, wenn keine Adresse verfügbar ist.
Irgendwelche Ideen, wie man das kodiert?
http://tutorials.jenkov.com/java-nio/selectors.html –
ähnliches Thema http://stackoverflow.com/questions/36397158/java-multithreading-sockets/36398341#36398341 – pdem