Java中的非阻塞套接字写入与阻塞套接字写入相比
发布时间:2020-12-14 05:45:47 所属栏目:Java 来源:网络整理
导读:为什么有人更喜欢阻止写入非阻塞写入?我的理解是,如果你想确保另一方在写入方法返回后获得TCP数据包,你只想要阻塞写入,但我甚至不确定是否可能.你必须刷新和刷新必须刷新底层操作系统写入套接字缓冲区.那么非阻塞套接字写入有什么缺点吗?有一个大的底层写
为什么有人更喜欢阻止写入非阻塞写入?我的理解是,如果你想确保另一方在写入方法返回后获得TCP数据包,你只想要阻塞写入,但我甚至不确定是否可能.你必须刷新和刷新必须刷新底层操作系统写入套接字缓冲区.那么非阻塞套接字写入有什么缺点吗?有一个大的底层写入套接字缓冲在性能方面是一个坏主意吗?我的理解是,底层套接字写缓冲区越小,你就越有可能遇到慢/错误的客户端,并且在底层套接字缓冲区已满且isWritable()返回false时,必须在应用程序级别中丢弃/排队数据包.
解决方法
你的理解是不正确的.它无法确保这一点. 阻塞写入阻塞,直到所有数据都已传输到套接字发送缓冲区,从那里异步传输到网络.如果读取器很慢,他的套接字接收缓冲区将填满,这最终会导致套接字发送缓冲区填满,这将导致阻塞写入阻塞,阻塞整个线程.非阻塞I / O为您提供了一种检测和处理这种情况的方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |