猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
问一下java网络编程中serverSocket.accept是如何做到阻塞的?
如题所示,我看了下源码,不知道它是怎么阻塞在那里的,既没有循环也没有其他什么的。
慕姐8265434
浏览 1697
回答 3
3回答
Smart猫小萌
跟进去看,和FileInputStream一样,调用的native方法阻塞的吧
0
0
0
开心每一天1111
掉用 accept 方法后,服务端进入阻塞状态,应该是在操作系统层次上进行了阻塞,因为没有客户端的到来,所以没有必要浪费CPU的时间。
0
0
0
GCT1015
调用了native方法进行了阻塞,具体和平台有关。 如果在mac下(unix),会进入java.net.PlainSocketImpl类的native void socketAccept(SocketImpl s)。 查看openjdk1.7的源码,/solaris/native/java/net/PlainSocketImpl.c中的Java_java_net_PlainSocketImpl_socketAccept方法中,有for (;;) 循环完成了阻塞。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续