Java多线程1.1.多进程和多线程的概述

多进程和多线程的概述

 

1:多进程和多线程的概述

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


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

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

      
而多线程却给了我们一个错觉:让我们认为多个线程是并发执行的。其实不是。
因为多个线程共享同一个进程的资源(堆内存和方法区),但是栈内存是独立的,一个线程一个栈。所以,它们仍然是在抢CPU的资源执行。一个时间点上只能有一个线程执行,而且谁抢到,这个不一定,所以,造成了线程运行的随机性。
    
6:那么什么又是并发呢?
    大家注意两个词汇的区别:并行和并发
    并行 是逻辑上同时发生,指在某一个时间段内同时运行多个程序。
    并发 是物理上同时发生,指在某一个时间点同时运行多个程序。(如何解决高并发的问题?需要大数据的知识!)
    那么,我们能不能实现真正意义上的并发呢,可以,多个CPU就可以实现,不过你得知道如何调度和控制它们。

 

注:该系列博客内容参考自传智播客刘意老师视频。

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值