• 001-进程 和 线程


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



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


         
    4:什么是 线程?
        在同一个进程内又可以执行多个任务,而这每一个任务我就可以看出是一个线程。
        线程:是程序的执行单元,执行路径。是程序使用CPU的最基本单位。


        单线程:如果程序只有一条执行路径。
        多线程:如果程序有多条执行路径。
        
    5:多线程有什么意义呢?
        多线程的存在,不是提高程序的执行速度。其实是为了提高应用程序的使用率
        程序的执行其实都是在抢CPU的资源,CPU的执行权。
        多个进程是在抢这个资源,而其中的某一个进程如果执行路径比较多,就会有更高的几率抢到CPU的执行权。
        我们是不敢保证哪一个线程能够在哪个时刻抢到,所以线程的执行有随机性


    总结:


      进程:
           正在运行的程序,是系统进行资源分配和调用的独立单位。
           每一个进程都有它自己的内存空间和系统资源。


        线程:
            是进程中的单个顺序控制流,是一条执行路径
            一个进程如果只有一条执行路径,则称为单线程程序。
            一个进程如果有多条执行路径,则称为多线程程序。

      举例:
          扫雷程序,迅雷下载


      大家注意两个词汇的区别:并行并发


           并 行:是逻辑上同时发生,指在某一个时间内同时 运行多个程序。
           并 发:是物理上同时发生,指在某一个时间点同时 运行多个程序。
     
      Java程序的运行原理:
             由java命令启动JVM,JVM启动就相当于启动了一个进程。
            接着有该进程创建了一个主线程去调用main方法。



      思考题:jvm虚拟机的启动是单线程的还是多线程的?            
                 多线程的。
                 原因是 垃圾回收线程也要先启动,否则很容易会出现内存溢出。
                 现在的垃圾回收线程加上前面的主线程,最低启动了两个线程,所以,jvm的启动其实是多线程的。

  • 相关阅读:
    在使用SMO时,检索IsSystemObject属性将导致性能急剧下降的解决方法
    在没有安装.NET Framework 3.5的机器上使用LINQ等特性
    我的网站中的组织层次结构图信息与AD的同步问题
    有关视图状态(ViewState)的一些问题
    窗体控件visible属性问题
    SiteMapNode的几个特殊属性
    创建本地数据库时发生错误及其解决方案
    在基于Windows验证的Web应用程序中检索当前用户的所有角色
    在数据库恢复之前将数据库置为单用户模式
    将ASP.NET网站嵌入到MOSS站点下面的做法
  • 原文地址:https://www.cnblogs.com/penguin1024/p/11826920.html
Copyright © 2020-2023  润新知