并发编程常见概念

并发编程常见的概念

一:线程和进程

进程:并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。

线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。

线程与进程:线程和进程的实现在操作系统之间有所不同,但在大多数情况下,线程是进程的一个组件多个线程可以存在于一个进程中并发执行和共享资源(如内存)而不同的进程不共享这些资源。特别是,进程的线程共享其可执行代码及其值在任何给定时间动态分配变量和非线程局部 全局变量。如图:

1548160951846


二:同步和异步

同步和异步通常用来形容一次方法调用。
`同步方法调用:`调用者必须等到方法调用返回后,才能继续后续的行为。

异步方法调用:像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而异步方法通常会在另外一个线程中,“真实”地执行着。整个过程,不会阻碍调用者的工作。


三:并发和并行

并发和并行都可以用来表示两个或者多个任务一起执行,但是侧重点不一样。

并发:多个任务交替执行,并且多个任务之间也有可能是串行的

并行:真正的同时执行**。**

如图所示:

并行

这一张是并行的图,我们发现纵坐标某一时刻只有一个任务是在执行的,CPU在不断的切换线程,以极快的速度给人感觉是同时在执行。

1548162353873

而第二张图,则完美诠释了线程A、B、C同一时刻同时执行。


四:临界区

临界区通常指共享数据,可以被多个线程使用。当有线程进入到临界区时候,其他线程或者进程必须等待。

比如这样一个程序片段:

public class demo{
    private int age;
    public void setAge(){
        // 临界区
        synchronized{
             age++;
        }
    }
}

很明显age就是一个临界区。不同的线程同时对其操作必然会破坏age的真实输出,必须要对其进行保护,这里使用的是synchronized关键字,后面会具体讲。同时只有一个线程能进行age++操作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mindcarver

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值