#一篇文章让你了解四种线程池,学习Java不在困惑

在Java开发中,有时遇到多线程的开发时,直接使用Thread操作,对程序的性能和维护上都是一个问题,使用Java提供的线程池来操作可以很好的解决问题,于是找了下API看到Java提供四种线程池使用,Java通过Executors提供四种线程池,分别为:

1、newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

2、newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

3、newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。

4、newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

下面使用Java代码看一下使用:

(1) newCachedThreadPool

创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程

如果有想学习java的程序员,可来我们的java学习扣qun:79979,2590免费送java的视频教程噢!我整理了一份适合18年学习的java干货,送给每一位想学的小伙伴,并且每天晚上8点还会在群内直播讲解Java知识,欢迎大家前来学习哦。

Java四种线程池的学习与总结

(2). newFixedThreadPool

创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。Java示例代码:

Java四种线程池的学习与总结

执行后可以看到效果,固定了线程数为4 ,打印4个数字后会休眠5s后再次打印4个数字。

(3) newScheduledThreadPool

创建一个定长线程池,支持定时及周期性任务执行。示例:

Java四种线程池的学习与总结

这样就延迟了5秒执行操作。

(4) newSingleThreadExecutor

创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,示例:

Java四种线程池的学习与总结

这样执行代码后,会使用一个线程一次打印出0 1 2 3 4 间隔5s。 

线程池的好处:

1.减少在创建和销毁线程上所花的时间以及系统资源的开销 。

2.避免了造成系统创建大量线程而导致消耗完系统内存。

总结: FixedThreadPool是一个优秀的线程池,使用时需要注意当线程池中没有可运行任务时,它不会释放工作线程,还会占用一定的系统资源;CachedThreadPool线程池,当没有任务执行时,会释放调,当有任务时,又要创建,需要 消耗系统开销,而且在大量并发执行时,需要注意控制任务量,避免大量高并发导致系统问题。

猜你喜欢

转载自blog.csdn.net/qq_43202482/article/details/84447416