目录
什么是多线程
要说线程,必先说进程。
进程是程序的⼀次执⾏过程,是系统运⾏程序的基本单位,因此进程是动态的。系统运⾏⼀个程序即是⼀个进程从创建,运⾏到消亡的过程。
线程与进程相似,但线程是⼀个⽐进程更⼩的执⾏单位,是操作系统能够进行运算调度的最小单位。⼀个进程在其执⾏的过程中可以产⽣多个线程。它被包含在进程之中,是进程中的实际运作单位,而多线程就是指从软件或者硬件上实现多个线程并发执行的技术,具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。
与进程不同的是同类的多个线程共享进程的堆和⽅法区资源,但每个线程有⾃⼰的程序计数器、虚拟机栈和本地⽅法栈,所以系统在产⽣⼀个线程,或是在各个线程之间作切换⼯作时,负担要⽐进程⼩得多,也正因为如此,线程也被称为轻量级进程。
多线程:是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。
简单来说:线程是程序中一个单一的顺序控制流程;而多线程就是在单个程序中同时运行多个线程来完成不同的工作。
多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。多线程是在同一时间需要完成多项任务的时候实现的。
多线程的优点
- 多线程技术可以加快程序的运行速度,使程序的响应速度更快,因为用户界面可以在进行其它工作的同时一直处于活动状态。
- 可以把占据长时间的程序中的任务放到后台去处理,同时执行其他操作,提高效率。
- 当前没有进行处理的任务时可以将处理器时间让给其它任务。
- 可以让同一个程序的不同部分并发执行,释放一些珍贵的资源如内存占用等等。
- 可以随时停止任务。
- 可以分别设置各个任务的优先级以优化性能。
多线程的缺点
- 因为多线程需要开辟内存,而且线程切换需要时间因此会很消耗系统内存。
- 多线程需要协调和管理,需要CPU时间跟踪线程,线程的终止会对程序产生影响。
- 由于多个线程之间存在共享数据,因此容易出现线程死锁的情况。
- 对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。
什么时候使用多线程
1.高并发或者并行计算
系统接受实现多用户多请求的高并发时,通过多线程来实现。或者系统需要接受多个系统的数据,需要整理处理等场景都可以使用多线程。
2.线程后台处理大任务
一个程序是线性执行的。如果程序执行到要花大量时间处理的任务时,那主程序就得等待其执行完才能继续执行下面的。那用户就不得不等待它执行完。
这时候可以开线程把花大量时间处理的任务放在线程处理,这样线程在后台处理时,主程序也可以继续执行下去,用户就不需要等待。线程执行完后执行回调函数。比如:分片上传。
什么时候不使用多线程
1.对公有变量的同时读或写。
当多个线程需要对公有变量进行写操作时,后一个线程往往会修改掉前一个线程存放的数据,从而使前一个线程的参数被修改;另外 ,当公用变量的读写操作是非原子性时,在不同的机器上,中断时间的不确定性,会导致数据在一个线程内的操作产生错误,从而产生莫名其妙的错误,而这种错误是程序员无法预知的。
2.非耗时请求操作
正常的业务请求,是不需要使用多线程的
更多消息资讯,请访问昂焱数据(https://www.ayshuju.com/home)