executors可以创建哪些线程池
时间: 2023-06-03 21:08:02 浏览: 68
?答:executors可以创建以下类型的线程池:
1. FixedThreadPool(固定线程池):固定线程数量,适用于执行长期的任务。
2. CachedThreadPool(缓存线程池):线程数量不固定,根据需要创建新线程。适用于执行短期的任务。
3. SingleThreadExecutor(单线程池):只有一个线程的线程池。适用于需要顺序执行任务的场景。
4. ScheduledThreadPool(定时线程池):定时执行任务的线程池。适用于需要延迟执行或定时执行的任务。
相关问题
为什么不使用Executors去创建线程池
Executors虽然方便快捷,但是在实际使用中不建议使用,主要原因有以下几点:
1. 隐式地使用了默认的ThreadPoolExecutor,使用默认的线程池可能会导致一些问题,比如线程数过多或过少,任务队列过长等。
2. Executors创建的线程池没有明确的拒绝策略,如果任务队列已满,会导致新任务被丢弃或者线程抛出异常。
3. 线程池的参数设置不够灵活,无法满足不同场景的需求,比如线程数的动态调整、任务队列的选择等。
因此,建议在实际使用中,使用ThreadPoolExecutor手动创建线程池,并根据实际情况进行参数配置。
通过Executors静态工厂构建线程池
可以使用Executors静态工厂构建线程池,例如:
ExecutorService executorService = Executors.newFixedThreadPool(10);
这将创建一个固定大小为10的线程池。