美文网首页
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。

    相关文章

      网友评论

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

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