大厂首发:android开发和java开发区别

本文探讨了并发编程中的三大特性:原子性、可见性和有序性,并介绍了CPU缓存模型及其带来的缓存一致性问题。Java内存模型(JMM)通过volatile关键字解决了部分并发问题,保证了可见性和有序性,但无法确保原子性。文中还对比了volatile和synchronized的区别,并给出了volatile的使用条件。最后,强调了掌握并发编程在成为优秀架构师过程中的重要性。
摘要由CSDN通过智能技术生成

开头

Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。Spring更是避免了重复造轮子的工作并跟随着互联网行业的发展做出不断的更新,很多研发人员把spring看作心目中最好的Java项目,没有之一。

**可以毫不夸张的说,Spring重新定义了Java,**所以这是重点也是难点,工作中必须会,面试时肯定考,不过很多人在面试的时候在简历上写着熟悉Spring,但也不过只是会用SSM,在这个基础上做crud罢了,对于Spring全家桶里面其他技术点真的有所掌握吗?

Spring系列包含非常多的项目,可以满足Java开发中的方方面面,先来看下常用框架的知识点汇总:

本文分享的内容是:阿里“重推”的Spring+Spring Boot+Spring Cloud Alibaba学习手册,如果你拿到这份宝典认真的看完后,那你对于Spring的掌握绝对不是“熟悉”的程度,接下来不多哔哔,直接上干货!(完整版内容请阅读至文末获取!)

并发编程三大特性

原子性

一个操作或者多次操作,要么所有的操作全部都得到执行并且不会受到任何因素的干扰而中断,要么所有的操作都执行,要么都不执行

对于基本数据类型的访问,读写都是原子性的【long和double可能例外】。

如果需要更大范围的原子性保证,可以使用synchronized关键字满足。

可见性

当一个变量对共享变量进行了修改,另外的线程都能立即看到修改后的最新值

volatile保证共享变量可见性,除此之外,synchronizedfinal都可以 实现可见性。

synchronized:对一个变量执行unclock之前,必须先把此变量同步回主内存中。

final:被final修饰的字段在构造器中一旦被初始化完成,并且构造器没有把this的引用传递出去,其他线程中就能够看见final字段的值。

有序性

即程序执行的顺序按照代码的先后顺序执行【由于指令重排序的存在,Java 在编译器以及运行期间对输入代码进行优化,代码的执行顺序未必就是编写代码时候的顺序】,volatile通过禁止指令重排序保证有序性,除此之外,synchronized关键字也可以保证有序性,由【一个变量在同一时刻只允许一条线程对其进行lock操作】这条规则获得。

CPU缓存模型是什么

高速缓存为何出现?

计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的**临时数据是存放在主存(物理内存)**当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值