下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

刚学习编程的你知道多线程吗

作者:课课家教育     来源: http://www.kokojia.com点击数:909发布时间: 2016-08-11 18:20:01

标签: 多线程多进程多线程的优势

大神带你学编程,欢迎选课

  多线程这个名字大家可能都并不陌生,但是对于初学者来说可能还不太了解多线程是什么。多线程是和进程相比,它是一种非常切换快,更"节俭"的一种多任务操作方式。而多进程相对于多线程就是一种比较"昂贵"的多任务操作方式。下面我们来一起了解一下关于多线程以及多线程的优势。

刚学习编程的你知道多线程吗_多线程_多进程_多线程的优势_课课家

     线程

   线程是程序运行的基本执行单位,现在的所有操作系统都支持同时运行过个任务。而一个任务就相当于一个程序,每一个运行中的程序就是进程。当操作系统在执行一个程序的时候,必须至少建立一个线程来作为这个进程运行的入口。所以在系统中运行的任何一个程序都会有一个主线程。在进程中会包含我们平时所说的顺序执行流,而这每一个顺序执行流就相当于一个线程。

  进程和线程

   现代的操作系统中,进程和线程是两个必不可少的运行模型。几乎所有的操作系统中都会有进程的概念,而上文中也说到了一个任务就相当于一个程序,而一个进入内存中运行的程序就是进程。由于进程是一个运行中的程序,所以具有一定的独立能力,它是系统中一个进行资源分配以及调度的独立单位。

   在操作系统中可以有多个进程,而这些进程包括系统进程以及用户进程。一个进程又可以拥有一个或者多个线程。下面说说关于进程的特征:

进程与线程的关联

   独立性

   进程是系统中独立存在的实体,也就是说系统中的进程是在各自独立的内存空间中运行的。它可以拥有自己独立的资源,并且每一个进程都拥有自己的私有地址。

   动态性

   运行中程序叫进程,那么进程和程序之间的区别就在程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合。而要注意的是,进程具有自己的生命周期接个各种不同的状态,而这些都是程序所不具有的。

   并发性

   简单来说就是,在一个处理器上可以同时执行多个进程,并且这几个进程之间不会有影响。

  多线程

线程的工作流程图

上图是线程的工作流程图

线程状态转换图

 

上图是线程转态转换图

 

   一个进程可以拥有多个线程,所以说线程是进程中的组成部分,也就说说一个线程必须会有一个父进程。线程自身是不能拥有系统资源的,但是它可以拥有自己的堆、栈、局部变量以及程序计算器。

   一个父进程中的线程可以共享系统分配给这个父进程的内存空间,也就是说线程可以共享进程的内存。

   线程不仅可以共享进程的内存,而且还拥有一个属于线程自己的内存空间,这一段内存空间叫做线程栈。这是在建立线程的时候系统所分批的,主要用来保存线程内部所使用的数据。注意,在任何一个先被建立的时候都会执行一个函数,这个函数叫做线程执行函数。你也可以看作这个函数是线程的入口,类似于程序中的main函数一样。

   下面我们看看线程的特征

    1)线程和进程一样也是独立运行的,它并不知道进程之中是否还有其他的进程存在

    2)正在运行的线程可能在任何时候被挂起,以便其他的线程运行。就是说线程的执行方式是抢占式的。

    3)线程可以完成一定的任务并且在上文也说了可以和进程中的其他线程共享父进程中的全部资源,并且可以通过相互之间的共同协作完成进程所需要完成的任务。

   一个系统中可以运行多个程序就叫做多进程,而多线程就是扩展了多进程的概念,多线程使得一个进程可以同时并发的处理多个任务,所以多线程也会被称作轻量级进程。

   既然多线程和多进程的概念相类似,也可以说,线程在进程中的地位就像进程在操作系统中的地位一样。它在进程中是独立并且是并发执行流。

  并发以及并行

   并发的意思是在同一时刻只能有一个线程在执行,但是由于多个线程被快速的轮换执行,所以在表面上是多个进程在同时执行。

   并行的意思是有多个处理器同时执行多条指令。

  多线程的优势

   1)如果你在开发的时候可以合理的利用多线程,那么将会减少开发以及维护成本,甚至可以改善复杂的应用程序性能。打个比方就是在GUI应用程序中,还可以通过线程的异步特性来更好地处理事件。

   2)线程的划分的尺度是小于进程的,使得多线程划分的并发性更高。而进程在执行的时候会有自己的独立的单元,并且多个线程共享,所以可以提高运行的效率。

   3)由于同一个进程中的线程都有一个共性:多个线程可以共享同一个进程的虚拟空间。这个特性使得线程比进程具有更高的性能。那么线程共性的环境有哪些呢?共性的环境有:进程代码段以及进程共有数据等。而且线程利用共性的数据进行通信是很容易的。

  多线程的优点

   多线程的优点在文中也有说过,现在来总结一下。

   1)系统创建一个进程是要分配给进程独立的内存空间以及分配大量的资源,但是创建一个线程就不用这么麻烦。所以有时候用多线程来实现并发是会比多进程实现并发的性能个个高很多。 

   2)线程之间共享进程内的内存非常容易。

   3)在java语言中内置多线程功能支持,而不是单纯的作为底层操作系统的调度方式,从而简化Java的多线程编程。

  总的来说,多线程的创建比多进程的方便,并且多线程的性能也比多进程的性能要高。在一个程序运行之后一定会有一个进程,而一个进程中可以存在多个线程。这样子,比较好理解进程和线程之间的关系。在学习更深入的进程以及多线程的知识的时候不要把两者分开看作个体,基本上的方式都是两者结合运行。

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程