Thread生命周期

本文详细介绍了Java中线程的六种状态,包括NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,并解释了线程状态转换的机制。同时,文章还列举了一些常用的线程操作方法,如start、join、interrupt等,以及创建线程的三种常见方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博客导航
Java中线程的状态分为6种。早期的线程模型只有5种状态。

sun.misc.VM类
   /* The threadStatus field is set by the VM at state transition
     * in the hotspot implementation. Its value is set according to
     * the JVM TI specification GetThreadState function.
     */
    private final static int JVMTI_THREAD_STATE_ALIVE = 0x0001;
    private final static int JVMTI_THREAD_STATE_TERMINATED = 0x0002;
    private final static int JVMTI_THREAD_STATE_RUNNABLE = 0x0004;
    private final static int JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400;
    private final static int JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010;
    private final static int JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020;
    
Thread.State枚举类
  public enum State {
        NEW,
        RUNNABLE,
        BLOCKED,
        WAITING,
        TIMED_WAITING,
        TERMINATED;
    }
  • NEW:初始状态,线程被构建,还未调用start()方法;
  • RUNNABLE:运行状态,在java多线程模型中,就绪和运行都是运行状态;
  • BLOCKED:阻塞状态,线程阻塞于锁;
  • WAITING:等待状态,需要等待其他线程做出一些特定动作(通知或中断)。比如中断,需要其他的线程来唤醒;
  • TIME_WAITING:超时等待,可以在指定的时间内自行返回;
  • TERMINATED:终止状态,线程执行完毕。
    在这里插入图片描述
    一些线程的方法
    start 启动线程
    setName 设置线程名称
    setPriority 设置线程优先级,默认5,取值1-10
    join 挂起线程xx毫秒,参数可以不传
    interrupt 终止线程
    isAlive 测试线程是否处于活动状态
    yield 暂停当前执行的线程对象,并执行其他线程
    sleep 挂起线程xx秒,参数不可省略
    currentThread 返回对当前正在执行的线程对象的引用
    holdsLock 当前线程是否拥有锁

创建线程有两种方式
(1)继承Thread类
(2)实现Runnable接口
(3)通过Callable和Future创建线程

相关链接:
java8网上源码
java7的thread源码位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值