java基础-线程有哪些状态
线程有哪些状态?
答:Java中的线程状态由Thread类的内部枚举类State表示,总共有6种状态。NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED
详细说明:
NEW(新建):通过new关键字创建一个Thread对象后,线程的初始状态是NEW。
RUNNABLE(可运行):当调用线程的start()方法后,线程的状态会变为RUNNABLE。RUNNABLE状态表示线程是可运行的,但是否正在运行取决于操作系统的调度。特别说明:当线程调用阻塞的方法如I/O操作,线程状态仍然是RUNNABLE。
BLOCKED(阻塞):BLOCKED状态只和内置锁有关。每个对象在内存中都有一个内置锁,它是java对象的内存结构的Mark Word部分。
WAITING(等待):通过object.wait()、lock.lock()、otherThread.join() 等方法时,当前线程会主动变为WAITING状态。处于这种状态的线程不会被分配CPU执行时间。
TIMED_WAITING(定时等待):通过Thread.sleep(1000)、object.wait(1000)、otherThread.join(1000)等方法可以使线程进入TIMED_WAITING状态。处于这种状态的线程不会被分配CPU执行时间。
TERMINATED(终止):线程执行完任务或由于异常而结束执行后,线程进入TERMINATED状态。