相关疑难解决方法(0)

如何确定高延迟网络请求的最佳线程数?

我正在编写一个必须生成数千个网络请求的实用程序.每个请求只接收一个响应的小数据包(类似于ping),但可能需要几秒钟才能完成.处理每个响应在一个(简单)代码行中完成.

这样做的最终结果是计算机不受IO限制,受文件系统限制或受CPU限制,它仅受响应延迟的约束.

这类似于,但一样有一种方法可以确定理想的线程数?Java最好的方法来确定最佳线程数[重复] ...主要的区别是我只受延迟的约束.

我正在使用一个ExecutorService对象来运行线程和一个Queue<Future<Integer>>跟踪需要检索结果的线程:

ExecutorService executorService = Executors.newFixedThreadPool(threadPoolSize);
Queue<Future<Integer>> futures = new LinkedList<Future<Integer>>();

for (int quad3 = 0 ; quad3 < 256 ; ++quad3) {
    for (int quad4 = 0 ; quad4 < 256 ; ++quad4) {
        byte[] quads = { quad1, quad2, (byte)quad3, (byte)quad4 };
        futures.add(executorService.submit(new RetrieverCallable(quads)));
    }
}
Run Code Online (Sandbox Code Playgroud)

...然后我将队列中的所有元素出列,并将结果放入所需的数据结构中:

int[] result = int[65536]
while(!futures.isEmpty()) {
    try {
        results[i] = futures.remove().get();
    } catch (Exception e) {
        addresses[i] = -1; …
Run Code Online (Sandbox Code Playgroud)

java networking multithreading akka

10
推荐指数
2
解决办法
1万
查看次数

Java:将NIO与System.in一起使用

是否可以将NIO与System.in一起使用?

我想以某种方式将'stdin'视为可选择的频道.有没有人找到办法做到这一点?

java nio system.in

5
推荐指数
1
解决办法
6358
查看次数

标签 统计

java ×2

akka ×1

multithreading ×1

networking ×1

nio ×1

system.in ×1