线程池的五种状态

线程池的5种状态:Running、ShutDown、Stop、Tidying、Terminated。

线程池各个状态切换框架图:

image

1、RUNNING

(1) 状态说明:线程池处在RUNNING状态时,能够接收新任务,以及对已添加的任务进行处理。 
(02) 状态切换:线程池的初始化状态是RUNNING。换句话说,线程池被一旦被创建,就处于RUNNING状态,并且线程池中的任务数为0!

private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));
  • 1

2、 SHUTDOWN

(1) 状态说明:线程池处在SHUTDOWN状态时,不接收新任务,但能处理已添加的任务。 
(2) 状态切换:调用线程池的shutdown()接口时,线程池由RUNNING -> SHUTDOWN。

3、STOP

(1) 状态说明:线程池处在STOP状态时,不接收新任务,不处理已添加的任务,并且会中断正在处理的任务。 
(2) 状态切换:调用线程池的shutdownNow()接口时,线程池由(RUNNING or SHUTDOWN ) -> STOP。

4、TIDYING

(1) 状态说明:当所有的任务已终止,ctl记录的”任务数量”为0,线程池会变为TIDYING状态。当线程池变为TIDYING状态时,会执行钩子函数terminated()。terminated()在ThreadPoolExecutor类中是空的,若用户想在线程池变为TIDYING时,进行相应的处理;可以通过重载terminated()函数来实现。 
(2) 状态切换:当线程池在SHUTDOWN状态下,阻塞队列为空并且线程池中执行的任务也为空时,就会由 SHUTDOWN -> TIDYING。 
当线程池在STOP状态下,线程池中执行的任务为空时,就会由STOP -> TIDYING。

5、 TERMINATED

(1) 状态说明:线程池彻底终止,就变成TERMINATED状态。 
(2) 状态切换:线程池处在TIDYING状态时,执行完terminated()之后,就会由 TIDYING -> TERMINATED。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Android 中,线程池是一种常用的多线程处理方式,它能够帮助我们更加高效地管理线程。 Android 提供了一个 ThreadPoolExecutor 类,可以用来创建一个线程池。ThreadPoolExecutor 类的构造函数参数有五个,分别是: 1. corePoolSize:线程池中核心线程的数量,即使它们处于空闲状态也不会被回收掉。 2. maximumPoolSize:线程池中最多可以同时运行的线程数量。 3. keepAliveTime:当线程池中的线程数量大于 corePoolSize 时,空闲线程的存活时间。 4. unit:keepAliveTime 的时间单位。 5. workQueue:用于存储等待执行的任务的阻塞队列。 以下是一个线程池的示例代码: ``` // 创建一个核心线程数为 5,最大线程数为 10,空闲线程存活时间为 5000 毫秒的线程池 ExecutorService executorService = new ThreadPoolExecutor(5, 10, 5000, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); // 提交任务给线程池执行 executorService.submit(new Runnable() { @Override public void run() { // 执行任务的代码 } }); // 关闭线程池 executorService.shutdown(); ``` 在使用线程池时,需要注意线程池的大小以及存活时间等参数的设置,以及在任务执行完毕后及时关闭线程池,避免资源的浪费。 ### 回答2: Android线程池是一种用于管理和执行多线程任务的机制。它使用线程池来维护一个线程队列,根据需要自动创建和销毁线程,以此来提高应用程序的性能和资源利用率。 Android线程池有几种类型,包括固定线程数的线程池、可缓存线程池、单线程池和定时线程池。在创建线程池时,可以指定线程的数量和其他参数。 线程池中的线程可以执行各种任务,例如加载网络数据、处理数据库操作、执行文件读写等。通过线程池,可以将这些任务分发给线程来并发执行,避免了频繁地创建和销毁线程的开销。 使用线程池可以带来许多好处。首先,线程池可以避免创建过多的线程导致系统资源的浪费。其次,线程池可以控制并发线程的数量,防止系统因线程过多而崩溃。此外,线程池还可以提高任务执行的效率,因为线程池中的线程可以在任务空闲时被复用,而不是每次都创建新线程。 在Android开发中,我们可以使用ThreadPoolExecutor类来创建和管理线程池。它提供了一些方法来添加、执行和移除任务。例如,可以使用execute方法向线程池中添加任务,使用shutdown方法来关闭线程池。 总之,Android线程池是一种非常有用的工具,它可以帮助我们管理和执行多线程任务,提高应用程序的性能和资源利用率。通过合理地配置线程池的参数,我们可以根据实际需求来优化多线程任务的执行效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值