Java使用线程池异步处理并返回结果

这篇具有很好参考价值的文章主要介绍了Java使用线程池异步处理并返回结果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.1、@Bean注入的线程池

// future 使用的线程池
@Configuration
public class ThreadPoolConfig {	
		@Bean(value = "callbackExecutor")
    public ThreadPoolTaskExecutor callbackExecutor() {
        ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
        taskExecutor.setThreadNamePrefix("futureThreadPool");
        taskExecutor.setCorePoolSize(20);
        taskExecutor.setKeepAliveSeconds(300);
        taskExecutor.setMaxPoolSize(100);
        taskExecutor.setQueueCapacity(400);
        taskExecutor.initialize();
        return taskExecutor;
    }
}

1.2、注入线程池处理异步任务

@Resource
private ThreadPoolTaskExecutor callbackExecutor;

public List<T> func(){
     List<Callable<T>> TCallableList = new ArrayList<>();
     for(int i = 0;i < len;i++){
      	 Callable<T> callable = () -> {
      	 	//如数据库操作,函数操作
        	//处理任务返回类型为T
      	 };
     	 TCallableList.add(callable);
     }
     try {
	     List<Future<T>> TFutureList = callbackExecutor
	                                 .getThreadPoolExecutor()
	       							// 提交一批任务并等待它们全部完成
	                                 .invokeAll(TCallableList);
	     List<T> TList = new ArrayList<>();
	     for (Future<T> future : TFutureList) {
	         TList.add(future.get());
	     }
	     return TList;
     } catch (Exception ex) {
     	 System.out.println(ex.getMessage());
     } 
}

文章来源地址https://www.toymoban.com/news/detail-653482.html

到了这里,关于Java使用线程池异步处理并返回结果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java多线程怎么同步返回结果

    在 Java 多线程中,如果需要等待线程执行完成并返回结果,可以使用 Java 的线程同步机制来实现。以下是一些常用的方式: 使用 join() 方法:可以使用线程的 join() 方法来等待线程执行完成。在主线程中调用 join() 方法,会阻塞主线程,直到该线程执行完成。在被等待的线程执

    2024年02月14日
    浏览(23)
  • JAVA开发(通过网关gateway过滤器进行返回结果加密)

    在对C的网站或者APP后端接口中,参数的传输往往需要加密传输。这时我们 可以通过springcloud的网关过滤器进行统一的控制。 网关过滤器的执行顺序: 请求进入网关会碰到三类过滤器:当前路由过滤器、DefaultFilter、GlobalFilter。 请求路由后,会将当前路由过滤器和DefaultFilter、

    2023年04月17日
    浏览(41)
  • Java:使用java调用shell命令并获取返回结果的代码

           如下提供一段简单的使用java调用shell命令并获取返回结果的代码,其中有获取正常返回结果和异常返回结果的处理方法,在实际使用时可根据实际情况进行调整。 调用此方法时传入实际执行的shell命令即可:

    2024年02月12日
    浏览(23)
  • Java 网络编程 —— 异步通道和异步运算结果

    从 JDK7 开始,引入了表示异步通道的 AsynchronousSockerChannel 类和 AsynchronousServerSocketChannel 类,这两个类的作用与 SocketChannel 类和 ServerSockelChannel 相似,区别在于异步通道的一些方法总是采用非阻塞模式,并且它们的非阻塞方法会立即返回一个 Future 对象,用来存放方法的异步运

    2024年02月05日
    浏览(25)
  • Java调用参数为xml格式的接口,分析转换返回结果

    最近第一次接触到xml格式的接口,以下是自己编写的经验,铁汁们可以参考自己的项目自行修改。 完整代码已附在文章末尾,如有缺陷,欢迎评论区或私信交流。 首先向接口提供方申请了接口文档,包含了接口地址和参数信息,先使用postman工具调用接口,分析参数和返回值

    2024年02月10日
    浏览(31)
  • CompletableFuture解决多线程返回结果问题

    在Java中CompletableFuture用于异步编程,异步编程是编写非阻塞的代码,运行的任务在一个单独的线程,与主线程隔离,并且会通知主线程它的进度,成功或者失败。 在这种方式中,主线程不会被阻塞,不需要一直等到子线程完成。主线程可以并行的执行其他任务。 使用这种并

    2024年02月16日
    浏览(37)
  • Java使用线程池批量处理数据操作

    疑问思路: 1.如何保证数据按顺序批量处理 2.如何保证数据全部处理完统一返回 3.如何保证是多任务异步操作 4.如何提高运行效率,减少运行时间 1.使用ArrayList 插入数据有序且可重复 2.CountDownLatch / Future / CompletableFuture 3.多线程 4.线程池创建多线程 具体流程: 获取需要进行批

    2024年02月09日
    浏览(50)
  • 多线程环境下Java怎么从线程返回信息?

    习惯了传统单线程过程式模型的程序员在转向多线程环境时,最难掌握的一点就是如何从线程返回信息。从结束的线程获得信息,这是多线程编程中最常被误解的方面之一。run()方法和start()方法不返回任何值。 如下面程序 子线程的的作用是计算文件的SHA-256哈希值。解释如下

    2024年02月06日
    浏览(15)
  • Java算法题 给一个字符串表达式,实现一个基本计算器,返回计算结果

    题目: 考点:栈 解题思路: 使用 2 个栈,一个 stack_nums 用来保存计算过程的操作数,一个 stack_symbol 用来保存运算符。 在HashMap中,指定加减优先级为1,乘除优先级为2 循环遍历字符串s, 操作符入栈: 若当前字符为\\\'+\\\', \\\'-\\\', \\\'*\\\', \\\'/\\\', \\\'(\\\' 时,压入运算符栈 stack_symbol, 操作数入

    2024年02月07日
    浏览(36)
  • 【ElasticSearch】使用 Java 客户端 RestClient 实现对文档的查询操作,以及对搜索结果的排序、分页、高亮处理

    在 Elasticsearch 中,通过 RestAPI 进行 DSL 查询语句的构建通常是通过 HighLevelRestClient 中的 resource() 方法来实现的。该方法包含了查询、排序、分页、高亮等所有功能,为构建复杂的查询提供了便捷的接口。 RestAPI 中构建查询条件的核心部分是由一个名为 QueryBuilders 的工具类提供

    2024年01月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包