多线程(一) 基本概念

  1. 进程是什么

    进程是指一个内存中运行中的应用程序。每个进程都有自己独立的一块内存空间,一个应用程序可以同时启动多个进程。比如在Windows系统中,一个运行的abc.exe就是一个进程;

  2. 线程是什么

    线程是指进程中的一个执行任务(控制单元),一个进程可以同时并发运行多个线程;

  3. 进程和线程的区别

    进程:有独立的内存空间,进程中的数据存放空间(堆空间和栈空间)是独立的,至少有一个线程;

    线程:堆空间是共享的,栈空间是独立的,线程消耗的资源也比进程小,相互之间可以影响的,又称为轻型进程或进程元。

  4. 多进程和多线程是什么

    多进程:一个进程并发的运行多个线程;

    多线程:操作系统并发的运行多个进程;

    Java程序的进程(Java的一个程序运行在系统中)里至少包含主线程和垃圾回收线程(后台线程);

    扫描二维码关注公众号,回复: 2814184 查看本文章

    我们查看Windows环境下的任务管理器:在操作系统中允许多个任务,每一个任务就是一个进程,每一个进程也可以同时执行多个任务,每一个任务就是线程;

  5. 并行和并发

    并行:指两个或多个事件在同一时刻点发生,在多核系统中可以实现;

    并发:指两个或多个事件在同一时间段内发生,单核系统中一般只有并发;

    在操作系统中,在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单CPU系统中,每一时刻却仅能有一道程序执行(时间片),故微观上这些程序只能是分时地交替执行。
    倘若计算机系统中有多个CPU,则这些可以并发执行的程序便可被分配到多个处理器上,实现多任务并行执行,即利用每个处理器来处理一个可并发执行的程序,这样,多个程序便可以同时执行,因为是微观的,所以大家在使用电脑的时候感觉就是多个程序是同时执行的。
    所以,大家买电脑的时候喜欢买“核”多的,其原因就是“多核处理器”电脑可以同时并行地处理多个程序,从而提高了电脑的运行效率。
    单核处理器的计算机肯定是不能并行的处理多个任务的,只能是多个任务在单个CPU上并发运行。
    同理,线程也是一样的,从宏观角度上理解线程是并行运行的,但是从微观角度上分析却是串行运行的,即一个线程一个线程的去运行,当系统只有一个CPU时,线程会以某种顺序执行多个线程,我们把这种情况称之为线程调度。

  6. 线程调度

    计算机只有一个CPU时,我们可以认为任意时刻只可以执行一条计算机指令,每一个进程只有在获得CPU的使用权后才可以执行自己的指令,所以多线程并发运行,从宏观上看,各个进程轮流获得CPU的执行权,各自执行自己的任务;

    那么,在可运行池中,会有多个线程处于就绪状态等到CPU,JVM就负责了线程的调度.JVM采用的是抢占式调度,没有采用分时调度,因此可以能造成多线程执行结果的的随机性。

  7. 多线程下载

    可以理解为一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道。当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器会对总下载线程进行平均分配。不难理解,如果你线程多的话,那下载的越快。现流行的下载软件都支持多线程。

    多线程是为了同步完成多项任务,不是为了提供程序运行效率,而是通过提高资源使用效率来提高系统的效率。所以现在大家买电脑的时候,也应该看看CPU的线程数。

  8. 多线程优势:

    多线程作为一种多任务、并发的工作方式,当然有其存在优势:

    ① 进程之前不能共享内存,而线程之间共享内存(堆内存)则很简单。

    ② 系统创建进程时需要为该进程重新分配系统资源,创建线程则代价小很多,因此实现多任务并发时,多线程效率更高.

    ③ Java语言本身内置多线程功能的支持,而不是单纯第作为底层系统的调度方式,从而简化了多线程编程.

猜你喜欢

转载自blog.csdn.net/qq_25385555/article/details/78977883