首页 文章

调用accept()的线程会发生什么?

提问于
浏览
0

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

Socket client = serverSocket.accept();

调用此accept函数的线程实际发生了什么? javadoc说“侦听与此套接字的连接并接受它 . 该方法将阻塞,直到 Build 连接 . ” “阻塞”是指忙碌等待的形式还是线程暂停/处于睡眠状态,直到它获得作为中断的请求或什么?此外,这种行为可以推广到套接字上的所有阻塞函数调用,如read等...

2 回答

  • 2

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

  • -1

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

相关问题