状态类型 | 特征描述 |
---|---|
新建状态(NEW) | 线程实例创建后未调用start()前的初始化阶段 |
可运行状态(RUNNABLE) | 包含就绪和运行中两个子状态,等待获取CPU时间片 |
阻塞状态(BLOCKED) | 线程等待获取监视器锁时进入的特殊状态 |
当多个线程竞争同一对象锁时,未获得锁的线程将进入同步队列等待。该队列遵循先进先出原则,确保公平的锁获取机制。
调用wait()方法的线程会释放持有的锁,并进入等待队列。这些线程需要通过notify()或notifyAll()方法唤醒后才能重新参与锁竞争。
方法名称 | 锁释放情况 | 状态变更 |
---|---|---|
sleep() | 保持锁 | TIMED_WAITING |
wait() | 释放锁 | WAITING |
notify() | 保持锁 | 唤醒单个线程 |
终止状态的线程不可重新启动,调用start()方法将抛出IllegalThreadStateException。建议通过状态检查避免此类异常。
if(thread.getState() == Thread.State.TERMINATED) { // 创建新线程实例代替重启}