多线程简介

作者: 程序员三千_ | 来源:发表于2019-02-20 10:33 被阅读0次

进程和线程

什么是进程?

可以简单的认为一个应用程序就是一个进程,不过有些应用程序会启动多个进程,即一个应用程序至少会启动一个进程,在windos系统上面通过任务管理器可以查看计算机上正在启动的进程。

进程和进程之间的内存是独立的,这样可以提高应用程序的稳定性和安全性。

什么是线程?

线程是进程中的一个执行场景,一个进程可以启动多个线程

使用多线程的可以提高CPU的使用率,不是提高执行速度。

比如一个程序要从本地硬盘中读取和处理文件,假设从硬盘读取一个文件要用6秒,处理一个文件用2秒,如果处理两个文件需要使用16秒:

6秒读取文件A

2秒处理文件A

6秒读取文件B

2秒处理文件B

在磁盘读取文件时,CPU是在等待磁盘读取数据,此时CPU是空闲的,一秒钟的时间对于CPU来说可以做非常多的事情,可以利用这段空闲时间去做别的事情,来改变一下上面程序的操作顺序:

6秒读取文件A

6秒读取文件B + 2秒处理文件A(利用CPU空闲时间)

2秒处理文件B

这样一共需要14秒就可以完成上面操作

这里其实是通过提高CPU的利用率来减少了操作时间

线程和线程之间共享堆内存和方法区,栈内存是独立的,每个线程有自己独立的栈

多线程的应用场景:

qq多人视频

迅雷同时下载多个文件

并行和并发

并行就是两个或两个以上的任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU)

并发是指两个或两个以上的任务都请求运行,而CPU只能接受一个任务,就把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务都在运行。

多线程的缺点

设计复杂

多线程中共享堆内存和方法区,因此里面的一些数据是可以共享的,在设计时要确保数据的准确性

资源消耗增多

栈内存是不共享的,如果启用多个线程的话会占用更多的内存

使用多线程可以提高CPU的使用率,但并不意味着线程越多越好,在编写程序时需要掌握好一个平衡点,这样才能够体现出多线程的价值。

相关文章

  • iOS开发进阶-实现多线程的3种方法

    相关文章链接:1.多线程简介2.实现多线程的3种方法(本文)......待续 前言 在多线程简介中,我已经说明过了...

  • iOS性能篇——并行开发其实很简单

    概览 1.多线程 1.1 简介 1.2 iOS 多线程 2.NSThread 2.1 解决多线程阻塞问题 2.2 ...

  • iOS多线程技术方案

    多线程技术方案 目录 一、多线程简介 1、多线程的由来 2、耗时操作的模拟试验 3、进程和线程 4、多线程的...

  • 多线程简介

    1、关于线程的概念 学习多线程,是为了将一些耗时操作放到后台,以提高用户体验。 进程进程可以理解成是系统中正在运行...

  • 多线程简介

    iOS系统 中,每一个应用都是一个进程。具体了解Runloop底层原理:https://www.jianshu.c...

  • 多线程简介

    内存模型 众所周之,Java是有个内存模型的,也就是堆区,栈区,本地方法区,方法区,程序计数器。其目的是为了让Ja...

  • 多线程简介

    iOS系统 中,每一个应用都是一个进程。具体了解Runloop底层原理:https://www.jianshu.c...

  • 多线程简介

    进程和线程 什么是进程? 可以简单的认为一个应用程序就是一个进程,不过有些应用程序会启动多个进程,即一个应用程序至...

  • Java-多线程(一)

    NO.1 多线程简介 NO.2 多线程实现方式(一) NO.3 多线程实现方式(二) NO.4 匿名内部类实现线程...

  • iOS多线程技术方案

    目录 一、多线程简介 1、多线程的由来2、耗时操作的模拟试验3、进程和线程4、多线程的概念及原理5、多线程的优缺点...

网友评论

    本文标题:多线程简介

    本文链接:https://www.haomeiwen.com/subject/dspcyqtx.html