为什么使用线程池

线程池好处:

  • 线程池可以提高线程复用,又可以固定最大线程使用量,防止无限制地创建线程。

  • 减少创建和销毁线程所消耗时间以及系统资源的开销。

  • 当程序提交一个任务需要一个线程时,会去线程池中查找是否有空闲的线程,若有,则直接使用线程池中的线程工作,若没有,会去判断当前已创建的线程数量是否超过最大线程数量,如未超过,则创建新线程,如已超过,则进行排队等待或者直接抛出异常。

不使用线程池问题:

有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题

以为线程方法不可用:

FixedThreadPool、SingleThreadPool、CachedThreadPool、ScheduledThreadPool

他们允许的请求队列长度为 Integer.MAX_VALUE,可能会堆积大量的请求,从而导致 OOM

建议使用线程方法:

ThreadPoolExecutor、ThreadPoolTaskExecutor

你可能感兴趣的:(java)