0

ソケットでリッスンしているサーバー スレッドがあります。次のようなステートメントを使用します。

Socket client = serverSocket.accept();

この受け入れ関数を呼び出すスレッドは実際にどうなるのでしょうか? javadoc には、「このソケットへの接続をリッスンし、それを受け入れます。接続が確立されるまでメソッドはブロックされます」と書かれています。「ブロック」とは、ビジー待機の形式を意味しますか、それとも割り込みなどの要求を受け取るまで、スレッドが一時停止/スリープ状態になっていることを意味しますか? また、この動作は、読み取りなどのソケットでのすべてのブロッキング関数呼び出しに対して一般化できますか...

4

2 に答える 2

2

簡単に言えば、スレッドは単に停止し、接続が確立されるのを待ちます。接続が確立されると、次の手順に進みます。

于 2012-05-08T22:14:43.917 に答える
-1

実装に依存します。Java がどのように実装されるかだけでなく、Java が呼び出すランタイム ライブラリと OS システム コールがどのように実装されるか。ただし、ファイル ハンドルが使用可能になるのを待機するためのブロックは、OS が最適化できるタイプのものであるため、これらの呼び出しはビジーでない待機になる傾向があります。ですから、確信は持てませんが、多分です。

于 2012-05-08T22:31:17.357 に答える