1. 线程和进程的概念
按照 *** 作系统中的描述,线程是CPU调度的最小单元,同时线程是一种有限的系统资源。而进程一般指一个执行单元,在PC和移动设备上指一个程序或者一个应用。一个进程可以包含多个线程。
简单点理解,一个Android APP就是一个进程,一个APP里面有多个线程,我们多线程编程的意义就是实现“一个APP多个线程”。
有杠精可能会问,那我可不可以一个APP多个进程?又可不可以一个进程只有一个线程?
我告诉你,可以,都可以。
单线程的APP只包括Android的UI线程也是能运行的;一个APP多个进程也是可以达到的,实现方式涉及到Android的IPC机制,这里不细说。
2. 为什么要使用多线程?
这里杠精可能会说,那你单线程也能跑,我为啥还要整多线程?
我告诉你,首先这句话从Android开发的角度来讲,近似于一个假命题。因为谷歌爸爸现在强制规定了不能在UI线程进行耗时 *** 作,必须放到子线程里面去,除非你的程序不涉及耗时 *** 作。究其原因,是因为在UI线程进行耗时 *** 作的话,给用户的使用体验就是界面“卡顿”。同时,如果UI线程被阻塞超过一定时间会触发ANR(Application Not Responding)错误。
从底层的角度来讲,多线程可以使得整个环境能够异步执行,这有助于防止浪费CPU时钟周期从而提高效率。换言之,多线程能更充分的利用CPU资源,从而提高程序的运行效率。
第一种是以毫秒为单位计算的。
[java] view plain copy
//伪代码
long startTime=System.currentTimeMillis() //获取开始时间
doSomeThing() //测试的代码段
long endTime=System.currentTimeMillis() //获取结束时间
System.out.println("程序运行时间: "+(end-start)+"ms")
第二种是以纳秒为单位计算的。
[java] view plain copy
//伪代码
long startTime=System.nanoTime() //获取开始时间
doSomeThing() //测试的代码段
long endTime=System.nanoTime() //获取结束时间
System.out.println("程序运行时间: "+(end-start)+"ns")
包含所需的包: import java.lang.System
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)