[java]线程池

为什么需要线程池

  1. 在Java中,如果每当一个请求到达就创建一个新线程,开销是相当大的。在实际使用中,每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源,甚至可能要比花在处理实际的用户请求的时间和资源要多得多。
  2. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争。
  3. 缺乏扩展性
  4. 缺乏可重用性

什么时候需要线程池

  1. 当一个Web服务器接受到大量短小线程的请求时,使用线程池技术是非常合适的,它可以大大减少线程的创建和销毁次数,提高服务器的工作效率。
  2. 需要提供定时执行、定期执行、单线程、并发数控制等功能。

java线程池

Java通过Executors提供了四种线程池,分别是:

1. newCachedThreadPool

– 缓存型线程池

– 可根据需要灵活回收空闲线程

– 可根据需要新建线程

– 通常用于执行生命周期很短的异步型任务

2. newFixedThreadPool

– 定长线程池

– 固定数目的线程数

– 控制最大并发数

3. newScheduledThreadPool

– 调度型线程池/定长/定时/周期性任务

4. newSingleThreadExecutor

– 单例线程

– 保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行

总结

java通过多线程的方式来实现并发,为了方便的管理线程,JAVA采用线程池的方式对线线程的整个生命周期进行管理。

CSDN博客稿源:CSDN博客 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 综合技术 » [java]线程池

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录