多线程 之线程的生命周期

在这里插入图片描述

线程是存在生命周期的。线程的生命周期分为五种状态:
1.新建状态
当线程使用new 关键字创建了一个线程以后,线程就出于新建状态。和其他对象一样,仅仅被分配内存,并初始化成员变量的值。
2.准备状态
当线程调用start()方法后进入准备状态。由cpu来决定哪个线程进入运行状态。
注意:
1.线程从新建状态进入到准备状态后,不可能在进入新建状态。
2.在等待/阻塞的线程被解除后,不能直接进入运行状态,而是进入准备状态。
3.首先进入准备状态的线程,由系统决定哪一个先进入运行状态、
3.运行状态
出于准备状态的线程被cpu选中进入运行状态,在运行状态中执行run()方法中的执行体。
在运行状态下可能被cpu中的调度程序调度到准备状态。
在单核cpu中只有一个线程在运行,在多核cpu中有多个线程在运行。
4.等待/阻塞状态
线程中有很多线程调度的方法,包括睡眠、阻塞、挂起和等待,这些方法会使得正在运行的方法处于等待/阻塞状态,
这些等待/阻塞状态的线程被解除后,不会立即回到运行状态,而是进入准备状态,等待系统的调度。
5.死亡状态
当线程的run()方法执行结束后,或者程序发生异常终止运行后,线程就会进入死亡状态。
处于死亡状态的线程就不能在使用start()方法启动线程,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java多线程生命周期包括以下几个状态: 1. 新建状态(New):当创建一个Thread对象时,线程处于新建状态。此时线程还没有开始执行,也没有分配到系统资源。 2. 就绪状态(Runnable):当调用线程的start()方法后,线程进入就绪状态。此时线程已经分配到了系统资源,但还没有开始执行。在就绪状态下,线程等待获取CPU的执行时间片。 3. 运行状态(Running):当线程获取到CPU的执行时间片后,线程进入运行状态。此时线程正在执行任务。 4. 阻塞状态(Blocked):在某些情况下,线程可能会被阻塞,例如等待某个资源的释放或者等待输入输出操作完成。当线程处于阻塞状态时,它暂时停止执行,直到满足某个条件后才能继续执行。 5. 等待状态(Waiting):线程进入等待状态是因为调用了wait()方法、join()方法或者LockSupport.park()方法。在等待状态下,线程会释放持有的锁,并且暂停执行,直到被唤醒或者超时。 6. 超时等待状态(Timed Waiting):线程进入超时等待状态是因为调用了带有超时参数的sleep()方法、wait()方法、join()方法或者LockSupport.parkNanos()方法。在超时等待状态下,线程会暂停执行,直到被唤醒、超时时间到达或者被中断。 7. 终止状态(Terminated):线程执行完任务或者发生异常后,线程进入终止状态。此时线程已经结束执行,不会再被调度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值