Android 进程状态的切换

进程状态转换,同样可用于线程的状态转移

一、进程状态

进程的生命周期内,有5种状态,分别为new, runnable, running, blocked, dead共5种状态,进程所处的状态,会随着系统负载以及运行环境的变化而不断发生改变(由一个状态切换到另一个状态)。

  • 创建状态(new):进程正在被创建,仅仅在堆上分配内存,尚未进入就绪状态;

  • 就绪状态(Runnable):进程已处于准备运行的状态,即进程已获得除了CPU之外的所需资源,一旦分配到CPU时间片即可进入运行状态。

  • 运行状态(Running):进程正在运行,占用CPU资源,执行代码。任意时刻点,处于运行状态的进程(线程)的总数,不会超过是CPU的总核数;

  • 阻塞状态(Blocked): 进程处于等待某一事件而放弃CPU,暂停运行。阻塞状态分3类:
    • 阻塞在对象等待池:当进程在运行时执行Object.wait()方法,虚拟机会把线程放入等待池;
    • 阻塞在对象锁池 :当进程在运行时企图获取已经被其他进程占用的同步锁时,虚拟机会把线程放入锁池;
    • 其他阻塞状态 :当进程在运行时执行Sleep()方法,或调用其他进程的join()方法,或者发出I/O请求时,进入该阻塞状态。
top Created with Sketch.