Java线程状态的转换

本文详细解释了Java中线程的六个主要状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED,以及状态转换的关键方法如start()、wait()和notify()。

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

【悲观锁】Java 线程八锁

【线程】Java线程状态的转换

【悲观锁】Synchronized和ReentrantLock的区别

【线程方法】多线程下 wait、notify、park、unpark 和 await、signal 的区别

【内存】Java中的volatile

【设计模式-单例模式】Java 单例模式双重校验锁变量

【CAS-乐观锁】AtomicInteger

【乐观锁】AtomicReference

【设计模式-享元模式】Java 享元模式自定义连接池

【线程池】自定义线程池

【线程池】ThreadPoolExecutor 线程池

【线程池】Executeror 构建线程池的方法

【线程池】ThreadPoolExecutor 的拒绝策略

【悲观锁】主要的 AQS 方法

【悲观锁】ReentrantReadWriteLock

【同步工具】StampedLock

【同步工具】CountDownLatch

【同步工具】CyclicBarrier和CountDownLatch的区别

线程安全集合类

LinkedBlockingQueue 怎么实现的线程安全

在Java中,线程可以处于不同的状态,而状态之间的转换是通过调用不同的线程方法或由操作系统进行管理的。主要的线程状态有以下几种:

1、NEW(新建):

  • 当创建了一个Thread对象时,线程处于NEW状态。
  • 还未调用 start() 方法。

2、RUNNABLE(可运行):

  • 线程可以运行,也可能正在运行。
  • 线程对象调用了 start() 方法,线程进入可运行状态。

3、BLOCKED(阻塞):

  • 阻塞状态表示线程阻塞于锁。
  • 当一个线程试图访问一个被其他线程持有的锁时,它就会进入阻塞状态。

4、WAITING(等待):

  • 表示当前线程等待其他线程执行完特定操作。
  • 例如,调用 Object.wait() 方法,或者是调用 Thread.join() 方法,对应线程会从RUNNABLE状态转换为WAITING状态。

5、TIMED_WAITING(计时等待):

  • 类似于等待状态,但可以在指定的时间后自行返回。
  • 例如,调用 Thread.sleep(long millis) 或带有超时参数的 Object.wait(),,对应线程会从RUNNABLE状态转换为TIMED_WAITING状态。线程调用相同对象的 Object.notify()Object.notifyAll() 方法时对应线程就会争抢锁,争抢成功的线程变成RUNNABLE状态,争抢失败的锁变成BLOCKED状态。注意:执行sleep时锁不会释放,执行wait时会释放锁。

6、TERMINATED(终止):

  • 线程已经执行完毕。
  • 线程正常终止、抛出一个未捕获的异常而终止或者执行了 Thread.stop() 方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值