线程的生命周期和线程池的生命周期

目录

线程的生命周期

1、新建状态

2、就绪状态

3、运行状态

4、死亡状态

5、阻塞状态

线程池的生命周期

 1、RUNNING

2、SHUTDOWN

3、STOP

4、TIDYING

5、TERMINATED


线程的生命周期

1、新建状态

通过new关键字创建出一个线程对象,没有启动之前(调用start方法之前)

RunnableDemo runnableDemo = new RunnableDemo();
Thread thread=new Thread(runnableDemo);
public class RunnableDemo implements Runnable  {
    @Override
    public void run() {
        for (int i=0;i<10;i++) {
            System.out.println(Thread.currentThread().getName() + "--------");
        }
    }

    public static void main(String[] args) {
        RunnableDemo runnableDemo = new RunnableDemo();
        Thread thread=new Thread(runnableDemo);
        thread.start();
        for (int i=0;i<10;i++) {
            System.out.println(Thread.currentThread().getName() + "--------");
        }

    }
}

2、就绪状态

调用start方法之后,准备执行,但并没有执行。此时的线程会添加到一个就绪队列中,所有就绪的线程同时去抢占cpu的资源。

thread.start();

3、运行状态

当当前进程获取到cpu资源之后,就绪队列中的所有线程会去抢占cpu的资源,谁先抢占到谁先执行,执行run方法,在执行的过程中就叫做运行状态。

4、死亡状态

当运行中的线程正常执行完所有的代码逻辑或者因为异常情况导致程序结束叫做死亡状态。进入死亡状态的方式:线程正常运行完成且结束;人为中断执行,比如使用stop方法;程序抛出未捕获的异常。

5、阻塞状态

在程序运行过程中,发生某些异常情况,导致当前线程无法再顺利执行下去,此时会进入阻塞状态,进入阻塞状态的原因消除之后,所有的阻塞队列会再次进入到就绪状态中,随机抢占cpu的资源,等待执行。进入阻塞状态的方式:调用sleep方法;调用wait方法;等待io资源; 其他线程调用join方法。

线程池的生命周期

线程池有两种状态:RUNNING和TERMINATED。

三种状态SHUTDOWN、STOP、TIDYING是过渡状态。

 1、RUNNING

线程池的初始化状态是RUNNING。即线程池一被创建,就处于RUNNING状态

能接受新提交的任务,能处理阻塞队列中的任务;

2、SHUTDOWN

调用线程池的shutdown()方法时,线程池由RUNNING -> SHUTDOWN。

关闭状态,不再接受新提交的任务,可以继续处理正在执行的任务以及阻塞队列中已保存的任务;

3、STOP

调用线程池的shutdownNow()接口时,线程池由RUNNING -> STOP。

不再接受新提交的任务,直接中断正在执行的任务,不再处理阻塞队列中的任务;

4、TIDYING

当线程池在SHUTDOWN状态下,阻塞队列为空并且线程池中执行的任务也为空时,就会由 SHUTDOWN -> TIDYING。 
当线程池在STOP状态下,线程池中执行的任务为空时,就会由STOP -> TIDYING。

所有任务已终止,线程池中线程数量为0。

5、TERMINATED

线程池处在TIDYING状态时,执行完terminated()之后,就会由 TIDYING -> TERMINATED。

线程池彻底关闭。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值