美文网首页计算机微刊
简单学习Java自带的线程池

简单学习Java自带的线程池

作者: java大湿兄 | 来源:发表于2017-09-17 18:51 被阅读0次

为了实现在并发环境下异步执行任务,我们会使用线程,为了避免频繁创建和销毁线程带来资源消耗,我们会用到线程池。

下面介绍Jdk的4种线程池并配以代码测试:

先定义一个线程类

1)定长线程池:FixedThreadPool

每来一个新的任务,线程池首先判断池里的线程数量有没有达到设定值,如果没有,则会创建一个新的线程,如果已经达到了设置值,线程池会再去判断池中有没有空闲的线程,有则使用,没有的话,新来的任务则会在队列里排队。

测试代码:

运行结果:

2)缓存线程池:CachedThreadPool

每来一个新的任务,线程池首先判断池里有没有空闲的线程,有则重用,没有则创建新的线程。如果一个线程在池里空闲了N秒(默认60S)而没有被重用,将会被线程池移除,释放资源。

源码中这样注释:

为什么非常适用于“短期任务”?

因为short-lived的任务才会很快执行完,线程才会空闲出来,新来的任务才会去重用空闲的线程,否则线程池就会不断地去创建新的线程,或者造成排队等待的任务越来越多,造成服务器压力越来越大。

测试代码:

运行结果:

3)单线程池:SingleThreadExecutor

线程池里只有一个线程,反复使用

测试代码:

运行结果:

4)预期的线程池:ScheduledThreadPool

可以延迟并周期性执行任务的线程池,对于同一个任务在周期性执行时,不一定用的都是同一个线程,线程池每次在执行任务时,只会优先重用空闲的线程。

测试代码:

运行结果: .学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群346942462,我们一起学Java!

相关文章

  • 简单学习Java自带的线程池

    为了实现在并发环境下异步执行任务,我们会使用线程,为了避免频繁创建和销毁线程带来资源消耗,我们会用到线程池。 下面...

  • Java线程池

    Java线程池 线程池代码Demo 核心类ThreadPoolExecutor 系统自带的线程池,通过Thread...

  • Java中的ThreadPoolExecutor线程池

    今天简单来和大家一起学习一下,java中的ThreadPoolExecutor线程池。 线程池简介 背书中,线程池...

  • 多线程

    线程基本介绍和创建方式 参考Java 多线程编程 jdk自带的线程池 java.util.concurrent包提...

  • Java自带线程池

    为何要使用线程池和任务队列 在实际应用场景中,通常会有大量的任务请求需要处理,如果应用轮询处理到达的请求,而通常请...

  • Android中线程池的使用分析

    引言:说起线程池,学习过Java基础的同学估计都不陌生,Android中的线程池其实就是java的线程池。那么为什...

  • 学习Java基础知识,打通面试关~十六自定义线程池

    在上篇文章中我们了解到了Java是怎么来建立自带的线程池的,虽然Java中提供了多种线程池,但是我们还是在某些场景...

  • java线程池总结

    线程池的学习总结 线程池的核心类是java.uitl.concurrent.ThreadPoolExecutor在...

  • Java线程池带图源码解析

    线程池作为Java中一个重要的知识点,看了很多文章,在此以Java自带的线程池为例,记录分析一下。本文参考了Jav...

  • 分析jdk-1.8-ForkJoinPool实现原理(上)

    Java并发编程源码分析系列: 分析Java线程池的创建 分析Java线程池执行原理 分析Java线程池Calla...

网友评论

    本文标题:简单学习Java自带的线程池

    本文链接:https://www.haomeiwen.com/subject/kkjmsxtx.html