0

我有一个正在侦听套接字的服务器线程。用这样的声明:

Socket client = serverSocket.accept();

调用此接受函数的线程实际发生了什么?javadoc 说“侦听与此套接字建立的连接并接受它。该方法阻塞,直到建立连接。” “阻塞”是指一种忙于等待的形式,还是线程暂停/处于睡眠状态,直到它收到作为中断的请求或其他东西?此外,这种行为是否可以推广到套接字上的所有阻塞函数调用,如读取等......

4

2 回答 2

2

简单地说,线程只是停止并等待建立连接。建立连接后,它将继续执行下一条指令。

于 2012-05-08T22:14:43.917 回答
-1

这取决于实施。不仅是 Java 是如何实现的,还有 Java 正在调用的运行时库和操作系统系统调用是如何实现的。但是,阻塞以等待文件句柄可用是操作系统可以优化的类型,因此这些调用往往是非忙等待。所以,你不能确定,但​​也许。

于 2012-05-08T22:31:17.357 回答