Java ExecutorService如何实现线程池的异步流程处理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计750个文字,预计阅读时间需要3分钟。
在项目中,前端通常面临快速显示信息的需求,而后台则需要执行复杂的逻辑处理。例如,前端通过点击数据导入按钮触发,后台执行逻辑A和逻辑B,处理大量数据。
相信大家都在项目中遇到过这样的情况,前台需要快速的显示,后台还需要做一个很大的逻辑。比如:前台点击数据导入按钮,按钮后的服务端执行逻辑A,和逻辑B(执行大量的表数据之间的copy功能),而这时前台不能一直等着,要返回给前台,告诉正在处理中就行了。这里就需要用到异步了。
点击按钮 -> 逻辑A ->逻辑B(异步) -> 方法结束。
到底,项目需求明确了,就引入了ExecutorServic线程池。
Java通过Executors提供四种线程池,分别为:
- newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
- newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
- newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
本文共计750个文字,预计阅读时间需要3分钟。
在项目中,前端通常面临快速显示信息的需求,而后台则需要执行复杂的逻辑处理。例如,前端通过点击数据导入按钮触发,后台执行逻辑A和逻辑B,处理大量数据。
相信大家都在项目中遇到过这样的情况,前台需要快速的显示,后台还需要做一个很大的逻辑。比如:前台点击数据导入按钮,按钮后的服务端执行逻辑A,和逻辑B(执行大量的表数据之间的copy功能),而这时前台不能一直等着,要返回给前台,告诉正在处理中就行了。这里就需要用到异步了。
点击按钮 -> 逻辑A ->逻辑B(异步) -> 方法结束。
到底,项目需求明确了,就引入了ExecutorServic线程池。
Java通过Executors提供四种线程池,分别为:
- newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
- newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
- newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。

