Java多线程深入理解学习笔记之一-----进程和线程的概述

1:要想了解多线程,必须先了解线程,而要想了解线程,必须先了解进程,因为线程是依赖于进程而存在。

2:什么是进程?
    通过任务管理器我们就看到了进程的存在。
    而通过观察,我们发现只有运行的程序才会出现进程。
    进程:就是正在运行的程序。
    进程是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间系统资源
    
3:多进程有什么意义呢?
    单进程的计算机只能做一件事情,而我们现在的计算机都可以做多件事情。
    举例:一边玩游戏(游戏进程),一边听音乐(音乐进程)。
    也就是说现在的计算机都是支持多进程的,可以在一个时间段内执行多个任务。
    并且呢,可以提高CPU的使用率。
    
    问题:
        一边玩游戏,一边听音乐是同时进行的吗?
        不是。因为单CPU在某一个时间点上只能做一件事情。

         而我们在玩游戏,或者听音乐的时候,是CPU在做着程序间的高效切换让我们觉得是同时进行的。

         注:那肯定会说到多核CPU对吧,但是多核CPU其实在某些情况下也是通过CPU的高效切换来运行的

         例:比如开启了30几个进程,但是你只有2个CPU,那么肯定运行不过来对吧,最后还是通过CPU的高效切换的
        
        
4:什么是线程呢?
    在同一个进程内又可以执行多个任务,而这每一个任务我就可以看出是一个线程。
    线程:是程序的执行单元,执行路径。是程序使用CPU的最基本单位
    单线程:如果程序只有一条执行路径。
    多线程:如果程序有多条执行路径。
    
5:多线程有什么意义呢?
    多线程的存在,不是提高程序的执行速度。其实是为了提高应用程序的使用率。
    程序的执行其实都是在抢CPU的资源,CPU的执行权。
    多个进程是在抢这个资源,而其中的某一个进程如果执行路径比较多,就会有更高的几率抢到CPU的执行权。
    我们是不敢保证哪一个线程能够在哪个时刻抢到,所以线程的执行有随机性。

     例:一个班级的人去抢老师扔的一个包子,有可能是班长抢到,也有可能是学习委员抢到,更有可能是老师自己抢到是吧,

      班级里的同学其实就相当于程序里的线程一样,去抢夺CPU的执行权,有随机性

       但是如果班长带着全班的人去抢隔壁班级(隔壁班级假设只有1个同学)那么我们班是不是有很大的几率抢到呢,

       这就相当于如果进程在抢资源,那么线程多的有更高几率抢到CPU的执行权

猜你喜欢

转载自blog.csdn.net/acDream_/article/details/81380756