线程、进程
1.多线程的介绍
1)多线程的优点
a.可以把占据时间较长的任务放到后台去处理
b.程序的运行速度加快
2)多线程运行具有以下特点
a.随机性。在多线程编程中,代码的执行结果与代码的执行顺序或调用顺序是无关的。线程是一个子任务,CPU以不确定的方式或者是以随机的时间来调用线程中的run方法。如果直接调用线程对象的run方法,不是启动线程,则是由main主线程来调用run方法。
b. start的执行顺序与线程的启动顺序不一定是一致的,即创建线程的顺序不一定就是线程执行的顺序。
c.在多线程中,main线程结束,其他线程不会强制结束,而是等到线程执行完后自动结束。
3)多线程带来的风险
a.安全性问题
b.活跃性问题:死锁、活锁、饥饿
c.性能问题:上下文切换
2 线程与进程的对比
1)进程
进程是操作系统动态执行的基本单元,在传统的操作系统中, 进程即是基本的分配单元,也是基本的执行单元。
狭义上看:进程是正在运行的程序的实例。
广义上看:进程是一个具有一定独立功能的程序,关于某个数据集合的一次运行活动。
2)线程
线程是操作系统能够进行运算调试的最小单位。它被包含在进程中,是进程中的实际动作单位。一个线程指的是进程中的一个单一顺序的控制流,一个进程中可以并发多个线程,每个线程执行不同的任务。
3)进程与线程间的不同
a. 最小单位:线程是处理器调度的基本单位,即程序执行的最小单位,而进程是操作系统分配资源的最小单位;(通俗的理解进程就是每个开启的可执行程序)
b.包含关系:一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线
c 资源获取方式:进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见;
d. 调度和切换不同:线程上下文切换比进程上下文切换要快得多
e. 地址空间不同:进程有自己独立的地址空间,线程共享进程的地址空间