Java四种线程池的基本用法

1.Java线程池

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

  1. newSingleThreadExecutor创建一个单线程池,线程池中只有一个线程,必须要等待执行完一个任务,才能执行下一个任务
  2. newFixedThreadPool创建一个固定大小的线程池,支持定时及周期性任务执行。
  3. newCachedThreadPool创建一个可缓存线程的线程池,可以根据任务数量去创建线程个数
  4. newScheduledThreadPool创建一个可执行延时任务的线程池,本质上是固定线程个数的线程池,可以执行延时任务

1.newSingleThreadExecutor:

创建一个单线程池,线程池中只有一个线程,必须要等待执行完一个任务,才能执行下一个任务,示例代码如下:
在这里插入图片描述
在单线程池中,必须要等上一个任务执行完成才能开始执行下一个任务,在此期间不会创建第二条线程。sleep方法是让线程休眠一秒钟。
在这里插入图片描述
线程运行五个任务但是只会有一条线程。

2.newFixedThreadPool:

创建一个固定大小的线程池,支持定时及周期性任务执行。示例代码如下:
在这里插入图片描述
比如说我创建了五个线程但是任务有八个,这个时候就先执行前面五个任务,等有空余的再接着执行剩下的三个任务。直到任务全部执行完成。
在这里插入图片描述
先有五个线程开始执行五个任务,然后再等着五个任务有先执行完的运行接下来的三个任务。

3.newCachedThreadPool:

创建一个可缓存线程的线程池,可以根据任务数量去创建线程个数,示例代码如下:
在这里插入图片描述
现在一个有五个任务在执行的时候就会创建五个线程,通俗来是就是有几个任务就创建几个线程,这就是可缓存线程的线程池。
在这里插入图片描述
有五个任务就创建了五条线程开始执行这五个任务。

4.newScheduledThreadPool:

创建一个可执行延时任务的线程池,本质上是固定线程个数的线程池,可以执行延时任务,示例代码如下:
在这里插入图片描述

表示延迟2秒之后再执行。
在这里插入图片描述
每过两秒执行一次。

为什么要用线程池:

  1. 减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。
  2. 可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存

Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值