线程状态描述

在操作系统中,线程的生命周期通常包括以下几个状态:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、终止(Terminated)。不同的操作系统或编程语言可能略有不同,但基本概念是相似的。

新建状态(New): 当线程对象被创建但还未启动时,线程处于新建状态。在 Java 中,通过创建 Thread 对象并调用 start() 方法来启动线程,使其进入就绪状态。

就绪状态(Runnable): 线程进入就绪状态表示它已经准备好运行,但还没有被分配到 CPU 时间片。在就绪状态下,线程等待操作系统的调度器将其分配到可用的 CPU 资源上执行。

运行状态(Running): 线程获得了 CPU 时间片并正在执行任务时,处于运行状态。在这个状态下,线程正在执行它的任务代码。

阻塞状态(Blocked): 当线程在执行过程中由于某些原因(如等待 I/O 操作、获取锁、等待其他线程的通知等)暂时无法继续执行时,它会进入阻塞状态。在阻塞状态下,线程会暂停执行,释放 CPU 资源,直到满足特定条件后重新进入就绪状态。

终止状态(Terminated): 线程执行完任务或者因异常而终止时,线程进入终止状态。在 Java 中,一个线程可以通过执行完 run() 方法或者抛出未捕获的异常来进入终止状态。

在这个生命周期中,线程在就绪、阻塞和运行状态之间转换,具体转换的时机取决于操作系统的调度器以及线程的执行情况。例如,在就绪状态的线程被调度到 CPU 执行时,它会进入运行状态;在执行过程中发生阻塞事件时,线程会进入阻塞状态;当阻塞事件解除时,线程又会重新进入就绪状态等待调度器的分配。
以下是停止当前线程的方法列表:
使用 Thread.currentThread().interrupt():

Thread.currentThread().interrupt();

抛出 InterruptedException:

try {
    // 阻塞方法
    Thread.sleep(1000);
} catch (InterruptedException e) {
    // 中断信号被捕获,执行清理工作并退出
    Thread.currentThread().interrupt(); // 重新设置中断状态
}

退出 run() 方法:

public void run() {
    while (!Thread.currentThread().isInterrupted()) {
        // 执行任务
    }
    // 清理工作
}

使用 Thread.stop()(已废弃):

Thread.currentThread().stop();
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值