ConcurrentPrograming——基本概念



一、进程与线程

1、进程

        看成是一个程序的实例,已经被加载如CPU中,进程是由多个线程组成的,用来加载指令、管理内存、管理IO的。当一个程序被执行,从磁盘加载这个程序的代码至内存,就开启了一个进程。在Java中进程是资源分配的最小单位,在winodows中进程是不活动的,作为线程的容器。

2、线程

        负责执行指令,一个线程就是指令流,将指令流中的一条条指令以一定的顺序交给CPU执行,在Java中线程作为最小调度单位。

3、线程与进程的异同

        1、进程基本上是相互独立的,线程在进程里面,是进程的子集,
        2、进程拥有共享的资源,如内存空间等共其内部的线程共享并使用。
        3、进程通信比较复杂,同一台计算机的进程通信叫作IPC,不同计算机之的进程通信要经过网络。
        4、线程共享进程内的内存,因而可以轻而易举实现线程通信。
        5、进程上下文切换成本比线程高。

二、上下文切换

1、基本概念

        上下文切换(从使用CPU到不使用CPU):当CPU处理线程或进程时,任务调度器给每个线程分配时间片,时间片用完会进入阻塞状态,这是会切换其他线程或进程工作叫作上下文切换。

2、原因

        1、线程的cpu时间片用完
        2、垃圾回收
        3、有更优先的线程需要运行
        4、线程调用了sleep、yield、wait、join、synchronized、lock等方法

3、影响

        发生上下文切换,操作系统要保存当前线程的状态(包括程序计数器、虚拟机栈、栈帧中的信息),并恢复另一个线程的状态(类似于程序计数器)频繁的上下文切换会影响性能。

三、并发与并行

        并发(Concurrent):操作系统中的任务调度器,为线程分配时间片,让线程轮流使用CPU。
在这里插入图片描述

        并行:在多核CPU下同时处理不同的事情,如果线程数大于核心数既有并行也有并发,并行不一定能够提升效率,能把任务拆分为多个小任务时才能提升效率。多核CPU才能实现并行,单核CPU执行并行操作时仍是轮流串行执行(并发),单核CPU执行多线程只是能够让不同的线程轮流使用CPU,不至于一个线程总占用CPU,别的线程没办法干活。

在这里插入图片描述

四、同步与异步

        同步:需要等待结果返回,才能继续运行。(同线程)
        异步:不需要结果返回,就能运行。(不同线程)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值