问题描述
- Executor的执行方式?
-
我通过实现runable接口后定义任务后,把任务交给了Executor的实现类后,有她
帮我管理线程执行,Executor 她是把我的任务是同步执行还是异步的去执行?
解决方案
首先,同步异步是处理请求的方式,是否立即返回处理结果告知调用者,这里不存在同步异步执行任务的概念。
其次,Executor是java并发包中提供的一个创建线程池的工具类,而线程池分为多种,有单线程执行任务的,也有多线程执行任务的。
例如:
Executors.newCachedThreadPool()创建的是多线程,那么线程池中缓存了N个线程去执行任务,那么你的任务就是有多个线程并行执行的。同时可以有多个任务被执行。
Executors.newSingleThreadExecutor()这个就是创建的是但线程,即线程池中只有一个线程池去执行你提交的任务,那么认为执行就是顺序执行的,即只能一个接一个执行。
线程池的作用就是缓存线程,有线程去执行任务,各个任务之间是独立并行执行的。当然newSingleThreadExecutor这个就退化成单线程了。
时间: 2024-12-03 04:16:08