java - 在多线程环境中限制连接组的速率

标签 java multithreading sockets networking nio

当我想在多线程环境中限制套接字组的传输速率时,我想知道哪种速率限制算法最有效。目前我正在使用单线程设计,它依赖于 Selector类(class)。在这个系统中限制传输速率非常简单,但我正在考虑使用工作线程来处理每个 IO 操作。当然,如果可能的话,我希望避免同步开销。

最佳答案

对 Socket/SocketChannel 读/写的每次调用都涉及许多同步。您可以限制写入数据的速率,但尝试限制读取数据的速率不太可能产生太大效果,它只会确定发生多少缓冲,而不是发送数据的速率。

值得注意的是,同步成本高达 2 微秒。一旦限制发送的数据,您将延迟更大的数字,例如 100 us 到 100,000 us。

我建议您实现一些简单且有效的东西,然后再考虑优化它。

关于java - 在多线程环境中限制连接组的速率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4914723/

相关文章:

java - Thread.currentThread().interrupt() 与 Runnable#run() 中的 this.interrupt()

c - 未在服务器端客户端-服务器 TCP 上接收单独的值

java - 为什么 Java 给我一个 IllegalArgumentException?

android - 处理程序调用 notifyDataSetChanged() 未执行

multithreading - 启动线程是简化代码的有效答案吗?

c# - 为什么服务器应用程序会收到50%的客户端消息?

c++ - WSAConnect() 与 ConnectEx()

java - 带有 Elasticsearch 的Spring Boot导致java.lang.NoSuchFieldError : IGNORE_DEPRECATIONS

java - += 与 Java 中的 =+

java - 将 int 从位的十进制表示形式转换为 native 位,而不使用 String? ( java )