1.JUC锁的一些概念
原文链接:http://blog.csdn.net/zteny/article/details/54859228
接下来的几篇文章都转自这里,冒犯之处,多多包涵
原子性:
在看原子性之前,我们先看看什么是原子。
1. 原子,记得在化学中提到原子是这么定义的
原子是元素能保持其化学性质的最小单位。 来自 wikipedia
因此我们认为原子是世界上最小的物质单位,具体有不可分割性。
2. 原子操作:是一个不再分的操作。
如,a=0 是一个子原操作。但a++, 不是原子操作,因为它是可以分解成 int t = a + 1; a =
t;
两个操作。
3. 原子性
由此便可引出原子性了,即是 一个操作属于原子操作的话,那么我们称它具有原子性
原语:
通常把不可断的过程称之为原语
是由若干条指令组成的,用于完成一定功能的一个过程。
primitive or atomic action 是由若干个机器指令构成的完成某种特定功能的一段程序,具有不可分割性。即原语的执行必须是连续的,在执行过程中不允许被中断。——百度百科
可见性:
可见性,是指线程之家的可见性,一个线程修改的状态是对另一个线程是可见的。
内存可见性:内存是线程共享的,线程A操作变量后,直接更新内存,线程B立马可以看到线程A操作的效果;后面讲到 volatile 时,在详细介绍
临界区:
我们把并发进程中与共享变量有关的程序段称为临界区。 —— 来自操作系统
可重入:
可重入,顾名思义,就是可以递归、循环进入
如果当前线程已经获得了某个监听器对象所持有的锁,那么该线程在该方法中调用另外一个同步方法也同样持有该锁。比如:
public synchronized void test() {xxxxxx;test2(); }public synchronized void test2() {yyyyy; }
在上面代码段中,执行 test 方法需要获得当前对象作为监视器的对象锁,但方法中又调用了 test2 的同步方法
如果锁是具有可重入性的话,那么该线程在调用 test2 时并不需要再次获得当前对象的锁,可以直接进入 test2 方法进行操作
如果锁是不具有可重入性的话,那么该线程在调用 test2 前会等待当前对象锁的释放,实际上该对象锁已被当前线程所持有,不可能再次获得
如果锁是不具有可重入性特点的话,那么线程在调用同步方法、含有锁的方法时就会产生死锁。
公平性:
公平性是出现在锁存在竞争的情况下,假若:在竞争锁的时候大家一起来排队,先到先得,我们认为这种策略是公平的;如果不是严格按照这个次序获取锁的情况,我们就称它是不公平的。即新来的人反倒有更大的机会拿到锁,这就是不公平的。
在实现上,新来的人,先做一次检查,如果当时有锁资源,就会先给新人。否则进入队列跟大家一起排队。
排它锁:
排它锁,也叫独占锁,顾名思义即是 只能有一个线程同时获取这个锁。也叫X锁
共享锁:
共享锁,也叫读锁,允许多个线程持有这个锁。称S锁
自旋锁:是一个不可重入性锁
可重入锁:
可重入锁,也叫做递归锁,指的是同一线程外层函数获得锁后,内层递归函数仍然有该锁资源
转载于:https://www.cnblogs.com/xuzekun/p/7481771.html
1.JUC锁的一些概念相关推荐
- Java多线程系列--“JUC锁”03之 公平锁(一)
概要 本章对"公平锁"的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括: 基本概念 ReentrantLock数据结构 参考代码 获取公平锁(基于JDK1.7.0 ...
- Java多线程系列--“JUC锁”05之 非公平锁
转载自:http://www.cnblogs.com/skywang12345/p/3496651.html点击打开链接 概要 前面两章分析了"公平锁的获取和释放机制",这一章开始 ...
- Java多线程系列---“JUC锁”01之 框架
本章,我们介绍锁的架构:后面的章节将会对它们逐个进行分析介绍.目录如下: 01. Java多线程系列--"JUC锁"01之 框架 02. Java多线程系列--"JUC锁 ...
- JUC锁框架AbstractQueuedSynchronizer详细分析
转载自:https://www.jianshu.com/p/0da2939391cf AQS是JUC锁框架中最重要的类,通过它来实现独占锁和共享锁的.本章是对AbstractQueuedSynchro ...
- JUC锁框架_AbstractQueuedSynchronizer详细分析
AQS是JUC锁框架中最重要的类,通过它来实现独占锁和共享锁的.本章是对AbstractQueuedSynchronizer源码的完全解析,分为四个部分介绍: CLH队列即同步队列:储存着所有等待锁的 ...
- JUC锁框架——AQS源码分析
2019独角兽企业重金招聘Python工程师标准>>> JUC锁介绍 Java的并发框架JUC(java.util.concurrent)中锁是最重要的一个工具.因为锁,才能实现正确 ...
- 行级锁(悲观锁)的概念
行级锁(悲观锁)的概念: 怎么样才会产生行级锁? 例如:select ename, job, sal from emp where job = 'Manager' for update; 在后面加了f ...
- JUC锁-框架与基本概念(一)
框架与基本概念 在了解后面的内容之前,必须要先了解基本概念: AQS – 指AbstractQueuedSynchronizer类. AQS是java中管理"锁"的抽象类,锁的许多 ...
- Java并发编程—锁的基本概念
在学习或者使用Java的过程中进程会遇到各种各样的锁的概念:公平锁.非公平锁.自旋锁.可重入锁.偏向锁.轻量级锁.重量级锁.读写锁.互斥锁等待.下边总结了对各种锁的解释 1.公平锁/非公平锁 公平锁是 ...
最新文章
- 《构建之法》问题与思考
- ansys fluent udf manual 下载_Fluent内置流固耦合01 使用流程
- 安装 | OpenCV4.2.0 + VS2017安装教程
- LeetCode 1114 按序打印
- 用redis解决超卖
- [react] React中在哪捕获错误?
- 阿里云能耗宝发布,助力中小企业绿色升级,参与碳中和万亿市场
- PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?
- 宫崎骏最美最经典的语录是什么?
- Linux系统中,各种小动物
- jsfl读取xml,图片,并生成swf
- OpenCart支付宝付款接口(直接到账、担保交易、双接口)
- VS 内存不能read—堆栈空间解决栈溢出问题
- MPMoviePlayerController 电影播放器—IOS开发
- 计算机无法计算,计算机无法计算到的F1最后一步
- 甬台温、温福铁路动车组时刻表
- 信息时代的管理信息系统
- bootstrapTable动态渲染数据获取
- Symantec赛门铁克官网下载地址
- ClickHouse插入频繁报错优化
热门文章
- 网站搜索引擎优化SEO策略及相关工具资源
- Android 网络协议
- HDU 3240 Counting Binary Trees 数论-卡特兰数
- [转载]与索引相关的概念---聚簇因子
- webkit-box translate 的组合--流畅的滑动体验
- [导入][你必须知道的.NET] 第三回:历史纠葛:特性和属性
- 关于mount nfs时-o nolock的问题
- 大数据之-Hadoop之HDFS的API操作_文件IO流_下载_案例---大数据之hadoop工作笔记0064
- Spring Security OAuth2.0_实现分布式认证授权_微服务解析令牌并鉴权_Spring Security OAuth2.0认证授权---springcloud工作笔记154
- Seata多微服务互相调用_全局分布式事物使用案例_Order-Module order微服务的配置搭建_写代码下---微服务升级_SpringCloud Alibaba工作笔记0062