前端之家收集整理的这篇文章主要介绍了
Java中的非阻塞套接字写入与阻塞套接字写入相比,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么有人更喜欢阻止写入非阻塞写入?我的理解是,如果你想确保另一方在写入
方法返回后获得TCP数据包,你只想要阻塞写入,但我甚至不确定是否可能.你必须刷新和刷新必须刷新底层操作系统写入
套接字缓冲区.那么非阻塞
套接字写入有什么缺点吗?有一个大的底层写入
套接字缓冲在
性能方面是一个坏主意吗?我的理解是,底层
套接字写缓冲区越小,你就越有可能遇到慢/
错误的客户端,并且在底层
套接字缓冲区已满且isWritable()返回false时,必须在应用程序级别中丢弃/排队数据包.
My understanding is that you would only want blocking write if you want to make sure the other side got the TCP packet once the write method returned
你的理解是不正确的.它无法确保这一点.
阻塞写入阻塞,直到所有数据都已传输到套接字发送缓冲区,从那里异步传输到网络.如果读取器很慢,他的套接字接收缓冲区将填满,这最终会导致套接字发送缓冲区填满,这将导致阻塞写入阻塞,阻塞整个线程.非阻塞I / O为您提供了一种检测和处理这种情况的方法.
原文链接:https://www.f2er.com/java/121450.html