ExecutorService底层
时间: 2023-10-27 12:52:12 浏览: 83
ExecutorService是Java中用于管理线程池的接口,它提供了一系列方法来提交任务,管理线程池,以及控制线程池的状态。它的底层实现则依赖于具体的线程池类,例如ThreadPoolExecutor。
ThreadPoolExecutor是Java中最常用的线程池实现,它的底层是基于一个任务队列和一组线程池来实现的。当有新任务提交时,它会先判断当前线程池中的线程是否都在忙碌状态,如果有空闲的线程则将任务分配给它,如果没有则将任务添加到任务队列中等待执行。当线程完成任务后,它会从任务队列中取出下一个任务进行执行,直到没有任务需要执行时线程将会被释放。
ThreadPoolExecutor还提供了一些参数来控制线程池的行为,例如线程池大小、任务队列大小、线程池的空闲时间等。这些参数可以根据实际情况进行调整,以达到最优的线程池性能。
相关问题
executorService.submit
ExecutorService的submit方法有三个重载版本:
1. submit(Runnable task):该方法接受一个Runnable任务作为参数,
#### 引用[.reference_title]
- *1* *2* [ExecutorService的submit()方法](https://blog.csdn.net/FantasticXX/article/details/105903313)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [Netty源码分析:ChannelFuture与Future底层解析](https://blog.csdn.net/qq_25805331/article/details/109359430)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
ExecutorService ThreadPoolExecutor 区别
ExecutorService和ThreadPoolExecutor是Java中用于管理线程池的两个关键类。它们之间的区别如下:
1. ExecutorService是一个接口,而ThreadPoolExecutor是ExecutorService接口的一个具体实现类。
2. ExecutorService提供了一组方法来管理和控制线程池的执行,例如提交任务、关闭线程池等。而ThreadPoolExecutor是ExecutorService接口的一个具体实现,它实现了ExecutorService接口定义的所有方法,并提供了更多的自定义配置选项。
3. ExecutorService可以通过Executors工厂类来创建不同类型的线程池,例如FixedThreadPool、CachedThreadPool等。而ThreadPoolExecutor是一个可自定义配置的线程池,可以根据需求来设置核心线程数、最大线程数、线程空闲时间等参数。
4. ExecutorService提供了一些方便的方法来执行任务并返回Future对象,可以用于获取任务的执行结果或取消任务的执行。而ThreadPoolExecutor则更加底层,提供了更多的线程池管理和控制的方法,例如设置拒绝策略、获取线程池状态等。
总结起来,ExecutorService是一个高级的线程池管理接口,而ThreadPoolExecutor是它的一个具体实现,提供了更多的自定义配置选项和底层的线程池管理功能。
阅读全文