先了解些并发的基本概念。
程序
程序 是数据和指令的有序集合,本身无意义,就是一个静态的概念。 进程 是执行程序的一个运行过程,操作系统的资源分配,是动态概念。 线程 是程序执行过程中的确切操作的执行对象。
线程
启动一个程序就会启动一个进程(Process),
一个进程内包含1个到多个线程(Thread)(必有一个main线程,还可能有其他守护线程daemon),
main线程是主线程,程序的入口,用于执行整个程序。
一个线程内包含多个指令(线程是cpu的调度和执行单位),
cpu是接受线程,处理指令的地方,
一个cpu一次只能处理一个线程任务,
线程需要获取cpu时间片才能被cpu处理,
时间片很短,windows下约为15ms,
并发&并行
参照物为cpu
并发 指单个cpu同时处理多个线程任务,cpu在反复切换任务线程,实际还是串行化的;
并行 指多个cpu同时处理多个线程任务,cpu可以同时处理不同的任务,异步处理;
并发条件
第一,是否有共享变量
第二,是否多线程环境
第三,是否多个线程更新共享变量
一句话:多个线程操作同一个对象;
多线程执行