并发知识学习

一、并发和并行的区别

并发是指多个线程操作同一个资源,不是同时执行,而是交替执行,单核CPU,只不过因为CPU的时间片很短,速度太快,看起来是同时执行。(例:张三、李四厨师,共用一口锅炒菜,交替执行)

并行才是真正的同时执行,多核CPU。每个线程使用一个单独的CPU的资源来运行(张三、李四厨师,一人一口锅,一起炒菜)

二、并发概念

并发是指多个线程操作同一个资源,不是同时执行,而是交替执行。
并发是多线程交替的访问同一个资源,该资源本身的特点是同一个时刻只允许一个线程的访问,那么就存在竞争的问题。同一个资源可以是CPU资源,也可以是内存资源。
Java并发的重要性毋庸置疑,其可以最大化的提高计算资源的效率。

三、并发的特性

Java模型是围绕并发过程中如何处理原子性、可见性、有序性3个特征设计的

3.1原子性

如果一个操作是不可分割的,那就是一个原子操作,也叫这个操作具有原子性。相反的,一个操作是可以分割的(如a++ ,它实际上是a=a+1),则就是非原子操作;原子操作是线程安全的,非原子操作是非线程安全的,但是可以通过同步技术(lock)同步数据模型(Concurrent容器等)把非原子操作序列变成线程安全的原子操作。
1、获取原有值
2、对于值进行加1
3、讲结果复制给a

3.2可见性

一个变量被多个线程共享,如果一个线程修改了这个变量的值,其他线程能够立即得知这个修改,则我们称这个修改具有可见性。

3.3 有序性

Java线程的有序性,表现为两个方面:在一个线程内部观察,所有操作都是有序的,所有指令按照“串行(as-if-serial,字面意思是“像排了序一样”,as-if-serial的真正含义是不管怎么重排序,一个单线程程序的执行结果都必须相同)”的方式执行。

在线程间观察,也就是从某个线程观察另一个线程,则所有其它线程都可以交叉并行执行,是正序的,唯一例外的是被同步方法、同步块、volatile等字段修饰的强制同步的代码,需要在线程间保持有序。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值