Java 线程的状态有哪几种?
Java线程的状态主要有六种,分别是:
-
初始状态(NEW):新创建了一个线程对象,但还没有调用start()方法。此时线程尚未启动,处于Java虚拟机中尚未运行的状态。1347810
-
运行状态(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法后,线程就进入了运行状态。在运行状态中,线程有可能正在执行,也有可能正在等待CPU时间片以便执行。12345678910
-
阻塞状态(BLOCKED):线程因为请求一个监视器锁(也就是等待某个对象的锁)而被阻塞。在这种状态下,线程无法运行,直到它获取到它所请求的锁。1346
-
等待状态(WAITING):线程进入等待状态,可能是因为调用了wait()、join()或者LockSupport.park()方法。在这种状态下,线程需要其他线程执行特定的操作(如调用notify()或notifyAll()方法)才能继续执行。1346
-
超时等待状态(TIMED_WAITING):与等待状态类似,但线程会在指定的超时时间后自动唤醒。这种状态通常发生在调用了带有超时参数的wait()、join()、sleep()或者LockSupport.parkNanos()以及parkUntil()方法时。1346
-
终止状态(TERMINATED):线程执行完run()方法中的所有操作,或者因为调用了stop()方法(不推荐使用,因为它是非安全的)而结束运行。在这种状态下,线程结束其生命周期。13467
NEW1 | 新建状态 线程被创建但未启动 |
RUNNABLE1 | 运行状态 线程可能正在执行或等待CPU时间片 |
BLOCKED1 | 阻塞状态 线程等待获取锁 |
WAITING1 | 等待状态 线程等待其他线程执行特定操作 |
TIMED_WAITING1 | 超时等待状态 线程在指定时间内等待 |
TERMINATED1 | 终止状态 线程执行完毕或被中断后终止 |
Java线程的6种状态1 | 线程状态概述 Java线程有NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED六种状态。 |
Java线程的五种状态和状态转换2 | 状态转换分析 初学者可通过状态转移图和代码示例学习线程状态转换。 |
Java线程的6种状态及切换条件3 | 状态切换条件 介绍线程状态间的切换条件和示例,涉及等待队列、同步队列和锁池。 |
Java中线程的六种状态含义和切换条件4 | 状态含义与切换 通过图示和代码示例帮助理解线程状态的含义和切换条件。 |
Java线程状态及转换代码示例5 | 代码示例说明 以代码示例为主,描述线程状态如何转换,不涉及过多理论。 |
Java官方定义的六种线程状态6 | 官方状态定义 介绍线程状态的转换过程和原因,以及LockSupport类的作用。 |
JAVA线程的状态7 | 官方文档引用 明确指出Java线程有6种状态,与操作系统线程状态不同。 |
Java中线程的状态8 | 线程状态详解 详细解释初始(NEW)和运行(RUNNABLE)状态,以及线程的start()方法。 |
Java线程状态详解9 | 权威解读 结合Java源代码,对线程状态进行详细解读,纠正错误理解。 |
Java中线程的状态10 | 状态定义与转换 再次强调线程有6种状态,并解释初始和运行状态。 |
NEW1 | 初始状态 新创建的线程对象,未调用start()方法。 |
RUNNABLE1 | 运行状态 线程可能正在执行或等待CPU时间片。 |
BLOCKED1 | 阻塞状态 线程等待获取锁,无法执行。 |
WAITING1 | 等待状态 线程等待其他线程执行特定操作。 |
TIMED_WAITING1 | 超时等待状态 线程在指定时间内等待。 |
TERMINATED1 | 终止状态 线程执行完毕,退出运行。 |