加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java中的非阻塞套接字写入与阻塞套接字写入相比

发布时间:2020-12-14 05:45:47 所属栏目:Java 来源:网络整理
导读:为什么有人更喜欢阻止写入非阻塞写入?我的理解是,如果你想确保另一方在写入方法返回后获得TCP数据包,你只想要阻塞写入,但我甚至不确定是否可能.你必须刷新和刷新必须刷新底层操作系统写入套接字缓冲区.那么非阻塞套接字写入有什么缺点吗?有一个大的底层写
为什么有人更喜欢阻止写入非阻塞写入?我的理解是,如果你想确保另一方在写入方法返回后获得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为您提供了一种检测和处理这种情况的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读