Java线程生命周期与系统线程对比

首先说明一下操作系统线程生命周期和Java线程生命周期的区别:

操作系统线程的5个状态:

  1. 新建:就是刚使用new方法,new出来的线程;

  2. 就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行;

  3. 运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功能;

  4. 阻塞:通过sleep或者锁进入阻塞状态,通过notify或者抢占到锁之后恢复就绪状态

  5. 终止:如果线程正常执行完毕后或线程被提前强制性的终止或出现异常导致结束,那么线程就要被销毁,释放资源;

Java线程的6个状态:

  1. New(初始化状态)(new Thread)

  2. Runnable(可运行/运行状态)(thread.start()进入可运行状态,等到cpu调度进入运行中)

  3. Blocked(阻塞状态)(Synchronized)

  4. Waiting(无时间限制的等待状态)(通过sleep、wait、join、LockSupport.park进入)(通过notify、notifyAll、LockSupport.unpark回到Runnable)

  5. Timed_Waiting(有时间限制的等待状态)(通过sleep(time)、wait(time)、join(time)、LockSupport.park(xx)进入)(通过notify、notifyAll、LockSupport.unpark回到Runnable)

  6. Terminated(终止状态)

重点:

  1. 创建线程后,不会立即开始执行,需要在就绪状态等待系统调用该线程
  2. Java中的三种阻塞(Blocked、Waiting、Timed_Waiting)均对应系统层面的阻塞状态
  3. Java中的Runnable对应系统层面的就绪+运行
  4. 运行状态的前置状态只有就绪,终止状态的前置状态只有运行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值