我有一个正在侦听套接字的服务器线程 . 用这样的声明:
Socket client = serverSocket.accept();
调用此accept函数的线程实际发生了什么? javadoc说“侦听与此套接字的连接并接受它 . 该方法将阻塞,直到 Build 连接 . ” “阻塞”是指忙碌等待的形式还是线程暂停/处于睡眠状态,直到它获得作为中断的请求或什么?此外,这种行为可以推广到套接字上的所有阻塞函数调用,如read等...
简单地说,线程只是停止并等待连接 . Build 连接后,它将继续执行下一条指令 .
这取决于实施 . 不仅实现了Java的实现方式,还实现了Java调用的运行时库和OS系统的调用方式 . 但是,等待文件句柄可用的阻塞是操作系统可以优化的类型,因此这些调用往往是非忙等待 . 所以,你不能确定,但也许 .
2 回答
简单地说,线程只是停止并等待连接 . Build 连接后,它将继续执行下一条指令 .
这取决于实施 . 不仅实现了Java的实现方式,还实现了Java调用的运行时库和OS系统的调用方式 . 但是,等待文件句柄可用的阻塞是操作系统可以优化的类型,因此这些调用往往是非忙等待 . 所以,你不能确定,但也许 .