一.进程和线程
1. 什么是进程?
进程:系统中正在运行的应用程序,进程为应用程序在内存中"开辟独立内存空间"
每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内
比如同时打开QQ、Xcode,系统就会分别启动2个进程
线程:cpu调度的最小单元 , 程序中的代码都是由线程来执行,同一个线程中的代码是顺序执行的(串行执行)
1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程)
线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行
比如使用酷狗播放音乐、使用迅雷下载电影,都需要在线程中执行
3. 线程的串行
1个线程中任务的执行是串行的
如果要在1个线程中执行多个任务,那么只能一个一个地按顺序执行这些任务
也就是说,在同一时间内,1个线程只能执行1个任务
比如在1个线程中下载3个文件(分别是文件A、文件B、文件C)
二. 多线程
1.什么是多线程 ?
1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务
比如同时开启3条线程分别下载3个文件(分别是文件A、文件B、文件C)
线程是由CPU调度的,整个系统中有很多条线程, CPU在多条线程中快速的来回切换,以保证多条线程"同时"执行,因为CPU的切换速度非常的快,所以就能过照成的一种同时执行的假象
>3.缺点:需要消耗大量的CPU资源
6.资源共享
>1.问题:多线程同步执行
>2.解决方法:使用线程同步技术
>3.原因:当多条线程访问同一块资源的时候,就会出现数据错乱和数据安全的问题!
7.可调度线程池:
(存放可以被CPU 执行的线程)-- 准备就绪之后的线程! --- CPU 只执行可调度线程池中的线程!
可调度线程池中的状态:可调度线程池:CPU 只会调度可调度线程池中的线程! 下面蓝色状态都位于可调度线程池中! '就绪','运行'!
不可调度线程池:下面红色状态都位于不可调度线程池中! "新建" ,"阻塞" ,"死亡"!