2017-11-14 11 views
1

Im Beispiel der offiziellen doc, scheint, dass wir Verbindung eine durch one.This akzeptieren sollte, macht mich verwirrt, so las ich die source code von sun.nio.ch.UnixAsynchronousServerSocketChannelImpl, in der Linie 269 gibt es ein Kommentar überprüfen und Flag setzen, um die gleichzeitige Annahme zu verhindern, also könnte mir jemand sagen, warum sollte aktuelle akzeptieren verhindern? Ist dies ein Limit des Betriebssystems oder muss die Verbindung derzeit nicht angenommen werden? Vielen Dank im Voraus.AsynchronousServerSocketChannel gleichzeitige Annahme

+0

Ich würde annehmen, es ist zu verhindern, mehrere Socket-Instanzen oder Streams zu erstellen, wenn die Verbindung Anfrage erhalten wird. Es würde also Probleme verursachen, die man akzeptiert. Sehen Sie, wie der ** NIO ** behandelt werden soll - es sollte nur einen einzigen [Selector] geben (https://docs.oracle.com/javase/8/docs/api/java/nio/channels/Selector). html) thread, um Verbindungen zu akzeptieren, jedoch haben Sie möglicherweise mehrere Threads, um mit den Daten umzugehen. – gusto2

Antwort

0

Sie verschmelzen Gleichzeitigkeit mit Asynchronität. Wenn Sie eine Verbindung über asynchrone E/A akzeptieren, sollten Sie sofort eine weitere asynchrone accept() einplanen.

Verwandte Themen