在切换进程的时候,通常会更加浪费资源 ,但是在线程的切换的时候资源损耗其实不大
但是如果是单个cpu的情况下,同一时间只能进行一个进程,如果想实现多任务的话,就只能每个进程或线程获得一个时间片,在某个时间片内,只能一个线程执行,然后按照某种策略换成其他线程执行。
我的理解是:
就单cpu来说的话,因为只有一个进程,不存在进程之间的切换,所以都是线程的切换。 对资源的消耗相差不多 ,没有比较的意义
对多cpu来说,进程切换非常损耗cpu资源。但是如果是多线程运行,确实会提高持续的执行速度,因为每个cpu都可以并发执行任务 。但是单线程 和多线程 同样做一件事情,把这个事情单独拎出来比较的话,多线程是不划算的。
举例:
烤饼,一个大盘子上(进程),烤一个饼(线程),我们把烤熟一个饼称为线程完成。
单线程:如果一个盘子只烤一个饼,相对来说,这个饼能够吸收的热量(资源)是比较多的,假设 5 分钟可以烤熟
多线程:一个盘子烤多个饼,相对来说,热量会被每一个饼给抢占(资源总额有限),每一个饼得到的热量没有烤一个饼的时候得到的多,那么这时候烤熟一个饼可能需要 6 分钟,所以单独把烤一个饼这件事拿出来说,多线程消耗了更多的资源。但是这其实并不是我们在乎的,因为多线程一次可以烤很多个饼。6分钟我们可能得到的是5个饼。这就是多线程的优势
所以如果拿整个进程来比较的话,多线程为我们节省了时间
之所以android 中ui线程是单线程,因为ui线程需要吧事情一件件做完才能接着往下走,如果把一件事情分配个多个线程,需要处理线程之间的通信,数据等操作,会使得操作更加复杂。所以选择用单线程