1.什么是线程
1>1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程),一个应用程序至少是一个进程(如果程序过大系统会分配过个进程,比如操作系统)
2>进程分配资源,线程执行任务
3>线程是进程的基本执行单元,一个进程(程序的所有任务都有在线程中执行),比如使用酷狗播放音乐,使用迅雷下载电影,都需要在线程中执行.
2.线程的类型
1>串行
1个线程中的任务执行是串行,即如果要在一个线程中执行多个任务,那么只能一个一个地按顺序执行这些任务(同一时间内1个线程只能执行一个任务)
也可以认为线程市金城中的 1条执行路径
比如一个线程中现在三个文件(A,B,C)
2>并行
1个进程中可以开辟多条线程,每条线程可以并行(同时)执行不同的任务
比如同时开辟3条线程,分别下载3个文件(文件A,文件B,文件C)
3.多线程原理
1>同一时间,cpu只能处理1条线程,只有1条线程在工作(执行)
2>多线程并发(同时执行),其实是cpu快速的在多条线程之间调度(切换)
3>如果cpu调度线程的时间足够快,就造成了多线程并发执行的假象
4>思考:如果线程非常多,会发生什么情况?
<1>cpu会在n条线程之间调度,cpu消耗会大大增加(一般情况下不会多于5条)
<2>每条线程被调度执行的频率会降低(线程的执行效率会降低)
4.多线程的优缺点
1>优点:
<1>能适当地提高程序的执行效率
<2>能提高资源的利用率(cpu,内存利用率)
2>缺点
<1>开辟线程需要占用一定的内存空间(默认情况下,主线程占1M,子线程占用512KB),如果开辟大量的线程,会占用大量的内存空间降低程序的性能
<2>线程越多,cpu在调度线程上得开销就越大
<3>程序设计更加复杂:比如程序之间的通讯,多线程的数据共享
5.什么是主线程
一个iOS程序运行后,默认会开启一条线程称为"主线程"或者"UI线程"
每一个进程都有自己独立的主线程
主线程的作用:
显示\刷新UI界面
处理UI事件(比如点击事件,滚动事件,拖拽事件)
主线程的使用注意:
不要将比较耗时的操作放入主线程中,否则会卡主线程