Java线程状态

1. NEW(新建):


  •    - 当线程对象被创建时,它处于新建状态。
  •    - 在这个阶段,操作系统资源(如CPU时间)尚未分配给线程。
  •    - 线程对象被创建,但还未调用 `start()` 方法。

2. RUNNABLE(可运行):


  •    - 一旦调用了线程对象的 `start()` 方法,线程就进入了可运行状态。
  •    - 在可运行状态下,线程有资格获取CPU时间片并执行任务。
  •    - 线程可能正在执行任务,也可能处于等待CPU调度的状态。

3. BLOCKED(阻塞):


  •    - 当线程在试图获取一个内部的锁时,但该锁已经被其他线程持有时,线程进入阻塞状态。
  •    - 比如线程在等待 `synchronized` 代码块或方法中的锁时,如果锁被其他线程持有,该线程就会被阻塞。

4. WAITING(等待):


  •    - 线程进入等待状态是因为在等待其他线程执行特定的操作。
  •    - 调用 `Object.wait()` 方法,线程会在等待队列中等待,直到其他线程调用相同对象的 `notify()` 或 `notifyAll()` 方法。
  •    - 调用 `Thread.join()` 方法,一个线程等待另一个线程的终止。
  •    - 调用 `LockSupport.park()` 方法,线程进入等待状态。

5. TIMED_WAITING(计时等待):


  •    - 类似于等待状态,但是具有等待一定时间后自动唤醒的特性。
  •    - 调用 `Thread.sleep()` 方法,线程会休眠指定的时间。
  •    - 调用 `Object.wait(timeout)` 方法,线程会等待一定的时间后自动唤醒。
  •    - 调用 `Thread.join(timeout)` 方法,一个线程等待另一个线程的终止,但最多等待一定时间。
  •    - 调用 `LockSupport.parkNanos()` 方法,线程进入计时等待状态。

6. TERMINATED(终止):

  •    - 当线程执行完任务或者由于异常情况提前退出时,线程进入终止状态。
  •    - 一旦线程进入终止状态,它的生命周期结束,不再运行。
  •    - 可以调用 `Thread.isAlive()` 方法来判断线程是否处于终止状态。
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值