线程生命周期及状态转换

更多多线程相关知识点详见个人主页【多线程相关】专栏

线程生命周期

线程的7种生命周期状态

  • New(新建)
    • 创建完但是还没有调用start()方法
  • Runnable(可运行/就绪)
    • 调用了start()方法后,等待CPU时间片时
  • Running(运行中)
    • 线程获得CPU资源并实际执行代码的状态
  • Blocked(阻塞)
    • 当一个线程试图获取某个锁对象,而该锁已经被其他线程占用时,当前线程就会进入Blocked状态
  • Waiting(等待)
    • 线程处于无限期等待另一个线程执行特定动作的状态。例如,通过调用Object.wait()等方法
  • Timed Waiting(计时等待)
    • 类似于Waiting状态,不过有超时限制。比如通过Thread.sleep(long millis)Object.wait(long timeout)等方法
  • Terminated(终止)
    • 线程已经完成执行或者因为异常退出了run()方法

指定状态间的转换

New到Runnable

调用线程对象上的start()方法,标志着线程调度器现在可以安排这个线程执行

Runnable到Running

线程得到CPU时间片并开始执行

Running到Runnable

当前运行中的线程的时间片用完

Running到Blocked

当线程尝试访问一个已被其他线程锁定的对象,且无权获得该对象时

Blocked到Runnable

当线程获得对应权限,可以访问到想要访问的对象时

Running到Waiting

线程调用wait()方法时

Waiting到Runnable

线程被notify()notifyAll()方法唤醒时

Running到Timed Waiting

线程调用sleep()方法时

Timed Waiting到Runnable

sleep()方法的时间片用完时

Running到Terminated

当线程完成了其run()方法的所有指令时,或者抛出了未捕获的异常时

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值