1.概念:
多线程(multithreading)到底是什么呢,它是指在软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件的支持,而能够在同一时间执行多个线程,进而提升整体处理性能。在一个程序中,这些独立运行的程序片段,叫做线程(thread)。利用它编程的概念就叫做多线程处理。
2.多线程的原理:
对于单核的cpu而言,同一时间,CPU实际只能处理一个线程,也就是说,在某一时刻,实际只有一个线程在执行。所以对于在单核的CPU,执行多线程。实际上是在不同的线程之间来回切换。造成多个线程同时执行的现象。如果同时启动的线程非常多的话,就会对CPU资源浪费。
而对于多核的CPU而言,才是真正的在某一个时刻同时执行。比如双核,双线程。
3.关于线程与进程
每一个正在系统上运行的程序都是一个进程,一个进程包含一个或多个线程。进程可能是整个程序或者部分程序程序的动态执行。线程是一组执行的集合,或者是程序的特殊段,它可以在程序里独立执行,也可以把它理解为代码运行的上下文。所以线程是轻量级的进程。它负责在单个程序里执行多任务。通常是由操作系统来负责多个线程的调度和执行。
线程是程序里单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程。
线程和进程的区别在于:子进程和父进程有不同的代码和数据空间。而多个线程则共享数据空间。每个线程都有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。线程的运行中需要使用计算机的内存资源和CPU.
4.多线程的优缺点
优点;
1.可以把耗时较长的任务放到后台去处理。比如,下载图片。
2.可以有更好的用户交互。比如进度条的显示。
3.程序的运行速度可能加快。
缺点:
1.当线程数量较多的时候,会占用大量的CPU资源。而且执行的时间只慢不快。
2.开启一个线程需要占用一定的内存空间。默认情况下,是512K,如果开启大量的线程,会占用大量的内存空间,降低程序的性能。更多的线程需要更多的内存空间。
3.程序设计更加复杂,比如线程间的通信,多线程的数据共享,可能会给程序带来更多的BUG,因此要小心使用。
4.通常块模型的数据在多个线程间共享的,需要进行合理的管理。
既然有优点也有缺点,那么为什么我们要学习和使用多线程编程技术呢?
一个个的按顺序执行程序是无法忍受的,比如你显示一个列表。里面很多人的头像,信息,但是下载头像需要大量的时间,你如果等待头像下载完毕,列表才能显示,是非常痛苦的,尤其在移动APP里,一切以用户的体验为第一重要任务。
在IOS开发里,在一个程序运行之后,默认开启一个线程,就是大家常说的“主线程”,或者“UI线程”。主线程一般用来刷新UI界面,处理UI事件。(比如点击,滚动,拖拽)等等。
在主线程的使用中要注意,不要将那些耗时的操作放到主线程中。
耗时操作会卡住主线程。严重影响用户体验。