美文网首页
多线程基础(一)

多线程基础(一)

作者: Maxinxx | 来源:发表于2019-03-06 16:04 被阅读0次

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

    一、什么是进程?

    任务管理器

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

    二、多进程有什么意义?

    • 单进程的计算机只能做一件事情,而我们现在的计算机都可以做多件事情。

    • 举例:一边玩游戏(游戏进程),一边听音乐(音乐进程)。

    • 也就是说现在的计算机都是支持多进程的,就可以在一个时间段内执行多个任务。并且可以提高CPU的使用率。

    • 问题:一边玩游戏,一边听音乐是同时进行的吗?
      答:不是。因为CPU在某一个时间点上只能做一件事情。(多核的话有可能可以,四核有四个进程,即是。但是一般来说,进程数要比核数多得多。)而我们在玩游戏,或者听音乐的时候,是CPU在做着程序间的高效切换,让我们觉得是同时进行的。

    三、什么是线程?

    在一个进程内又可以执行多个任务,而这每一个任务就可以看成是一个线程。
    线程:是程序的执行单元,执行路径,是程序使用CPU的最基本单位。
    单线程:程序只有一条执行路径。
    多线程:程序有多条执行路径。

    四、多线程有什么意义?

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

    五、并行和并发

    并行:是逻辑上同时发生,指在某一个时间内同时运行多个程序。
    并发:是物理上同时发生,指在某一个时间点同时运行多个程序。比如短时间内网站有大量点击,这就是一个高并发的问题。

    六、Java程序的运行原理

    由java命令启动JVM,JVM启动就相当于启动了一个进程。接着由该进程创建了一个主线程去调用main方法。

    思考题:jvm的启动是单线程还是多线程的?

    答:多线程的。因为垃圾回收线程也要先启动,否则很容易会出现内存溢出。所以垃圾回收线程加上主线程,jvm最少启动了两个线程,所以是多线程的。

    相关文章

      网友评论

          本文标题:多线程基础(一)

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