认识线程(Thread) 模式
进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216 ,而 32 位处理机的进程空间大小为 232 。进程至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。
线程,在网络或多用户环境下,一个服务器通常需要接收大量且不确定数量用户的并发请求,为每一个请求都创建一个进程显然是行不通的,——无论是从系统资源开销方面或是响应用户请求的效率方面来看。因此,操作系统中线程的概念便被引进了。线程,是进程的一部分,一个没有线程的进程可以被看作是单线程的。线程有时又被称为轻权进程或轻量级进程,也是 CPU 调度的一个基本单位。
Android采取Java的Thread框架,来协助建立多条线程并行的环境。
在Java里,撰写一个类别支持Runnable接口,在搭配Thread基类,就能顺利诞生一个新线程
来执行该类别的run()函数。
认识Android的主线程(处理UI线程,又称UI线程)
UI线程的诞生:
当我们启动一只APP时,Android就会诞生新进程(Process),并且将该APP程序加载在新诞生的进程里。
每个进程在其诞生时刻,都会诞生一个主线程,又称UI线程。
在进程诞生时刻,除了诞生主线程之外,还会替主线程诞生它专用的Message Queue 和 Looper.
View控件是有UI线程(主线程)所执行,如果需要去迅速更新UI画图或者UI画图需要较长时间(避免阻塞主线程),
就使用SurfaceView.它可以有背景线程(background thread)来执行,而View只能有UI线程执行画面显示或更新。
在SurfaceView里,非UI线程可以去触碰UI显示。例如将图形绘制在Surface画布上,这SurfaceView内含
高效率的rendering机制,能让背景线程快速更新surfaceView的内容,适合演示动画。
如何解决线程安全问题?
同步(synchronization)化解线程安全问题。
使用synchronized机制可以错开两个线程。