从Android3.0开始,系统要求网络访问必须在子线程中进行,否则会抛出异常,这么做是为了避免主线程被阻塞而导致ANR,那么网络访问的操作就必须要放到线程中去执行。
进程
进程是操作系统结构的基础,是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的基本单位。进程可以看做就是程序承载着不同线程的运行。Android系统中一个应用程序就是一个进程可以通过AS的Logcat窗口查看:
线程
、 上面图中的1894就是主线程的线程号,-后面的这个进程中的除主线程的其他线程,如果为1894-1894那么就是主线程。
线程是操作系统调度的最小单元,也叫作轻量级进程。在一个进程中可以创建多个线程,这些线程都拥有各自的计数器,堆栈和局部变量等特性,并且能够访问共享的内存变量。
线程的优势
使用多线程可以减少程序的等待时间,如果某个操作是耗时操作比如网络请求操作或陷入长时间的等待,这个时候APP不会响应用户的其他操作比如手势触摸滑动等,使用多线程可以使得将耗时操作放入到线程中去运行而不用担心阻塞主线程,在实际工作中可以通过Callable去启动线程,通过返回值Future去获取返回值。
线程间的切换操作损耗相比于进程来说更加轻量级
现在都是多核多CPU的处理器,一个核默认是一个线程当然除了intel的双线程技术,这使得我们可以压榨CPU的处理性能和计算速度,提高CPU的利用率使得我们的APP更加流畅
但是多线程使用不当也是会有很大的问题,下文进行分析。
原文链接:进程&线程 - 掘金 (juejin.cn)