进程状态和线程状态

2020-03-30  本文已影响0人  xueseyounai

进程状态有五种:

1.创建状态(new) :进程正在被创建,尚未到就绪状态。

2.就绪状态(ready) :进程已处于准备运行状态,即进程获得了除了处理器之外的一切所需资源,一旦得到处理器资源(处理器分配的时间片)即可运行。

3.运行状态(running) :进程正在处理器上上运行(单核CPU下任意时刻只有一个进程处于运行状态)。

4.阻塞状态(waiting) :又称为等待状态,进程正在等待某一事件而暂停运行如等待某资源为可用或等待 IO 操作完成。即使处理器空闲,该进程也不能运行。

5.结束状态(terminated) :进程正在从系统中消失。可能是进程正常结束或其他原因中断退出运行。

线程状态有6中,定义在Thread类中的enum类型的state类

public enum State {

    NEW,

    RUNNABLE,

    BLOCKED,

    WAITING,

    TIMED_WAITING,

    TERMINATED;

}

分为正常状态3种:

1.NEW:新建状态,Mythread thread=new MyThread();此时thread的状态

2.RUNNABLE:运行状态,thread.start();此时thread的状态,但是处于这个状态的线程并不一定真正执行,可能会存在在等待资源,因此网上也有人将这个状态分为就绪状态和执行状态两种

3.TERMINATED:结束状态,线程执行完之后的状态

异常状态3种:

1.BLOCKED:阻塞状态,通常出现在synchronized语句块中,代表着一个线程等待锁

2.WAITING:等待状态,通常出现在Object.wait(),Thread.join(),LockSupport.park()语句前后

3.TIMED_WAITING:等待状态,当前线程的等待时间是有限制的,时间一到线程就会被唤醒,通常出现Thread.sleep(long),Object.wait(long),Thread.join(long),LockSupport.parkNanos(),LockSupport.parkUntil()

补充:

1.为什么wait()是Object类的

https://www.cnblogs.com/lirenzhujiu/p/5927241.html

2.sleep()方法在thread类

https://blog.csdn.net/liuzhe_2008/article/details/36901737?utm_source=blogxgwz0

上一篇下一篇

猜你喜欢

热点阅读