美文网首页
guava实现一个有100次请求网络的线程池代码处理

guava实现一个有100次请求网络的线程池代码处理

作者: 爱学习的蹭蹭 | 来源:发表于2023-09-25 19:08 被阅读0次

google的guava实现一个有100次请求网络的线程池代码处理


google的guava实现一个有100次请求网络的线程池代码处理

import com.google.common.util.concurrent.*;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class GuavaExecutorsExample {
    public static void main(String[] args) {
        // 创建一个 ListeningExecutorService,该 executor 会在调用 submit() 时自动开始执行任务
        ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(100));
        try {
            // 提交100个任务并获取 Future 列表
            List<ListenableFuture<String>> futures = new ArrayList<>();
            for (int i = 0; i < 100; i++) {
                Callable<String> task = () -> {
                    // 这里执行你的网络请求逻辑,返回结果为 String 类型
                    return "Network Response " + i;
                };
                futures.add(service.submit(task));
            }
            // 使用 Guava 的 Futures 工具类等待所有任务完成,并获取所有结果
            Futures.allAsList(futures).get(30, TimeUnit.SECONDS); // 设置超时时间
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 记得关闭 executor,防止资源泄露
            service.shutdown();
        }
    }
}

maven 导入jar

mvn仓库


<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>32.1.2-jre</version>
</dependency>

Gradle 导入jar

// https://mvnrepository.com/artifact/com.google.guava/guava
implementation group: 'com.google.guava', name: 'guava', version: '32.1.2-jre'

在这个示例中,我创建了一个 ListeningExecutorService,这是一个可以提交 ListenableFuture 任务的 ExecutorService。然后我提交了100个任务,并使用 Futures.allAsList() 来等待所有任务完成并获取结果。最后,记得在所有任务完成后关闭 executor。

相关文章

  • JavaScript 执行机制

    五个线程 js引擎线程: 执行js代码GUI线程: 绘制用户界面http网络请求线程: 处理网络请求, 等请求返回...

  • okhttp内部线程池创建:ThreadPoolExecutor

    网络请求一般都是交给线程池进行一些耗时的处理。 看一下okhttp异步请求的代码: 使用内部dispatcher对...

  • I/O多路复用

    传统的每个网络请求都由accept轮询监听,若收到网络请求则开辟了一个线程去处理,这样会有很大的开销,若引入线程池...

  • 3. Dubbo线程池模型

    dubbo有两种线程池,io线程池、业务线程池以netty作为io框架为例:boss线程池: 主要处理新的连接请求...

  • 多线程多进程线程池进程池

    利用并发处理来自客户端的请求, server端 线程池处理请求 多线程处理请求 telnet 10.0.122.1...

  • Android HttpURLConnection简易框架

    1、概述 封装一个简易的HttpURLConnection简易框架,内部通过线程池来进行网络请求。同时实现了请求返...

  • Netty线程模型

    Netty通过Reactor模型基于多路复用器接收并处理用户请求,内部实现了两个线程池,boss线程池和work线...

  • Netty 线程模型

    Netty通过Reactor模型基于多路复用器接收并处理用户请求,内部实现了两个线程池,boss线程池和work线...

  • Java线程池的实现原理

    线程池的实现原理 当向线程池提交一个任务之后,线程池时如何处理的呢?让我们来看一下线程池的主要处理流程: 线程池判...

  • Java并发——线程池ThreadPoolExecutor

    线程池作用 相对于为每个请求都创建一个线程,线程池通过重用现有的线程而不是创建新线程,可以在处理多个请求时分摊在线...

网友评论

      本文标题:guava实现一个有100次请求网络的线程池代码处理

      本文链接:https://www.haomeiwen.com/subject/fxjcbdtx.html