Java线程的6种状态

Java的线程大致有6种状态:

NEW:

新建状态,new了一个线程。

Runable:

可执行状态,线程调用了start()或run()方法,或者等待结束,都会进入Runable状态,在操作系统或处理器而言,java的Runable状态可能是他们的就绪态或运行态,因为从就绪态到运行态是处理器决定的,Java无权过问,所以为了可以控制Java能控制的部分,方便理解和管理线程,Java将这种处于就绪队列或正在执行队列的线程统称Runable状态。

Waiting:

等待状态,线程调用了wait()方法或者join()方法之后,就会进入等待状态,知道等待被唤醒,才会进入Runable状态。

Time Waiting:

有限时间内等待状态,线程调用了wait(time)方法之后,会进入一个有限期的等待态,超过了时间或者在有限期内被唤醒都会进入Runable状态。

Blocked:

阻塞状态,线程在争抢某个对象的锁的时候,当一个线程占有了锁,那么其他争抢伙计都会进入阻塞态,知道抢到锁,才会进入Runable状态。

Terminated:

终止状态,线程完成run()方法或者调用了stop()方法或者出现异常等被各种原因终止时就会进入终止状态。

你可能感兴趣的:(深入Java,并发与同步,Java虚拟机)