Java基础学习总结(154)——Synchronized与Volatile、Synchronized与ReentrantLock概念及区别
一、Synchronized与Volatile的区别
首先需要理解线程安全的两个方面:执行控制和内存可见。执行控制的目的是控制代码执行(顺序)及是否可以并发执行。内存可见控制的是线程执行结果在内存中对其它线程的可见性。根据JVM的内存模型的实现,线程在具体执行时,会先拷贝主存数据到线程本地(CPU缓存),操作完成后再把结果从线程本地刷到主存。synchronized
关键字解决的是执行控制的问题,它会阻止其它线程获取当前对象的监控锁,这样就使得当前对象中被synchronized
关键字保护的代码块无法被其它线程访问,也就无法并发执行。更重要的是,synchronized
还会创建一个内存屏障,内存屏障指令保证了所有CPU操作结果都会直接刷到主存中,从而保证了操作的内存可见性,同时也使得先获得这个锁的线程的所有操作,都happens-before于随后获得这个锁的线程的操作。volatile
关键字解决的是内存可见性的问题,会使得所有对vol
Java基础学习总结(154)——Synchronized与Volatile、Synchronized与ReentrantLock概念及区别相关推荐
- 尚学堂JAVA基础学习笔记_2/2
尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...
- Java基础学习Day09--字符串
Java基础学习Day09--字符串 一.简介: 二.String类字符串 三.String字符串的存储原理 四.字符串常用方法 1.equals()方法 2.字符串的搜索 3.截取子字符串 4.去除 ...
- JAVA基础学习精简心得笔记整理
JAVA基础学习精简心得笔记整理 配置java环境变量 Java的运行过程 基本数据类型 引用数据类型 逻辑运算符 数组 方法重载 封装 继承 多态 多态的作用 单例设计模式 接口interface ...
- java基础学习整理(一)
java基础学习整理(一) lesson1: D0s命令: 1.回到根目录,>cd \ 2.复制命令行下的内容,右击标记所要复制的内容,这样就已经复制好了,右击粘贴就可以了. 3.查看,设置环境 ...
- 【Java基础学习笔记】- Day11 - 第四章 引用类型用法总结
Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 Java基础学习笔记 - Day11 - 第四章 引用类型用法总结 4.1 class作为成员变量 4.2 interface作为成 ...
- Java中大数据数组,Java基础学习笔记之数组详解
摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...
- java基础学安卓开发_Android开发学习路线之Java基础学习
原标题:Android开发学习路线之Java基础学习 很多Android学习开发者刚入手Android开发技术时,稍微有点迫切.任何的开发技术都有其基础语言,Android应用程序开发是以Java语言 ...
- Java基础学习:尚硅谷项目三 开发团队调度软件
Java基础学习:尚硅谷项目三 开发团队调度软件 一.软件功能与结构设计 1. 软件功能 该软件实现以下功能: 软件启动时,根据给定的数据创建公司部分成员列表(数组) 根据菜单提示,基于现有的公司成员 ...
- Java基础学习汇总
Java基础学习汇总 java语言基础 java函数和数组 java面向对象 java异常 整理用,早就停更... 写作不易,如果您觉得写的不错,欢迎给博主点赞.收藏.评论.收藏来一波~让博主更有动力 ...
- Java基础学习——第十四章 网络编程
Java基础学习--第十四章 网络编程 一.网络编程概述 计算机网络: 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信 ...
最新文章
- 全球只有4个人通关的游戏!不过如此
- Linux SKB结构体中各个长度字段的含义(len, data_len, headlen, pagelen)
- [云炬创业管理笔记]第二章测试6
- JSTL标签引入(web基础学习笔记十八)
- 信息学奥赛一本通(2043:【例5.11】杨辉三角形)
- (83)FPGA时钟抖动和时钟偏斜-面试必问(七)(第17天)
- Linux内核深入理解定时器和时间管理(4):定时器 timer
- 论文阅读笔记(十二)——U-Net: Convolutional Networks for Biomedical Image Segmentation
- SoundHound:根据哼唱的旋律找到你想要的歌曲
- 网络安全笔记-业务安全
- 卸载 mysql 2008_强力卸载SQL Server 2008图文详解
- DETR | 基于匈牙利算法的样本分配策略
- Matlab 模拟声波散射,一种目标声散射特征模拟装置的制作方法
- 特斯拉强制返岗遭亚马逊微软挖人:“不喜欢马斯克的速来,我们可居家办公”
- 弘辽科技:淘宝宝贝上下架有哪些规则?该如何优化?
- Shell脚本怎么写?这个基础教程你一定要看
- 哈工大软件构造 复习
- STM32——光敏传感器实验-M4
- web渗透测试在线网站
- 2019年如何抓住社交电商的风口
热门文章
- linux 多线程 多进程 利用率,多进程与多线程的深度比较
- 关于css外链和js外链的位置
- 力扣459. 重复的子字符串(KMP,JavaScript)
- python os write_Python 3:写入方法与os.write返回的字节数
- 2021高考文科成绩怎样查询,2021年本科分数线是多少?如何查询分数
- 判断点在直线的哪一侧_【倒车入库】车身是否“正直”该怎么判断?
- jumbo 安装mysql,关于建立社工库的经验总结
- typescript 判断异步执行已经结束_vue进阶系列——用typescript玩转vue和vuex
- yii ajax验证失败返回提示,Yii ajax显示错误提示,messagebox
- python写web自动化_jenkins+selenium+python实现web自动化测试