进程与线程基础

 

简单的了解,不包含代码

进程

程序中至少有一个进程,一个进程中至少有一个线程。

  1. 五种进程
  1. Foreground 当前进程正在运行,可以接受触点
  2. Visible      当前进程正在运行,但是其他一些界面显示在它之上,但是它是可见的
  3. Service     当前进程包含服务正在运行
  4. Background 当前进程在后台运行
  5. Empty      当前是空进程

 

  1. 进程的优先级

Foreground Process 前台进程,可见,但不一定active,例如弹出dialog时,dialog为active实体。

Background Process 后台进程,不可见。

显然,前台进程的优先级大于后台进程,优先级越低,越容易在CPU资源紧张的时候被杀掉。

可以简单的把五种进程优先级排序

Top:   1.Foreground 不仅可见,还能直接和用户接触。

High: 2.visible 仅仅可见

        3.service 包含在运行的服务

Low:   4.background

  1. Empty 空进程也是占用资源的

线程

  1. 线程的状态:
  • 新建(NEW):线程的初始状态
  • 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。
  • 运行(RUNNING):可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。
  • 阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入可运行(runnable)状态,才有机会再次获得cpu timeslice 转到运行(running)状态。阻塞的情况分三种: 

(一). 等待阻塞:运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。
(二). 同步阻塞:运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。
(三). 其他阻塞:运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。

  • 死亡(DEAD):线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。 

 

 

 

 

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值