为什么不使用Executors去创建线程池
时间: 2023-10-24 10:08:07 浏览: 82
Executors虽然方便快捷,但是在实际使用中不建议使用,主要原因有以下几点:
1. 隐式地使用了默认的ThreadPoolExecutor,使用默认的线程池可能会导致一些问题,比如线程数过多或过少,任务队列过长等。
2. Executors创建的线程池没有明确的拒绝策略,如果任务队列已满,会导致新任务被丢弃或者线程抛出异常。
3. 线程池的参数设置不够灵活,无法满足不同场景的需求,比如线程数的动态调整、任务队列的选择等。
因此,建议在实际使用中,使用ThreadPoolExecutor手动创建线程池,并根据实际情况进行参数配置。
相关问题
java提供了Executors用于创建线程池,c++有没有类似的做法?
C 语言没有像 Executors 那样的线程池库,但是可以使用 POSIX 线程库(pthread)来创建和管理线程。通过 pthread_create 函数可以创建新的线程,通过 pthread_join 函数可以等待线程结束并回收资源。同时,可以使用 pthread_mutex 和 pthread_cond 等同步机制来保证线程安全。
使用Executors创建线程池 会导致什么异常key
您好!感谢您对ChitGPT的关注和提问。
关于您的问题,使用Executors创建线程池可能会导致OOM(Out of Memory)异常。这是因为如果不适当地使用线程池,会导致请求堆积并最终导致内存耗尽。
为了避免这种情况,我们应该根据应用程序的负载和可用资源来控制线程池中的线程数量,并且在不再需要时及时关闭线程池。
希望我的回答对您有所帮助。如果您还有其他问题,请继续提出,我将尽力回答。
阅读全文