原文链接: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锁的一些概念相关推荐

  1. Java多线程系列--“JUC锁”03之 公平锁(一)

    概要 本章对"公平锁"的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括: 基本概念 ReentrantLock数据结构 参考代码 获取公平锁(基于JDK1.7.0 ...

  2. Java多线程系列--“JUC锁”05之 非公平锁

    转载自:http://www.cnblogs.com/skywang12345/p/3496651.html点击打开链接 概要 前面两章分析了"公平锁的获取和释放机制",这一章开始 ...

  3. Java多线程系列---“JUC锁”01之 框架

    本章,我们介绍锁的架构:后面的章节将会对它们逐个进行分析介绍.目录如下: 01. Java多线程系列--"JUC锁"01之 框架 02. Java多线程系列--"JUC锁 ...

  4. JUC锁框架AbstractQueuedSynchronizer详细分析

    转载自:https://www.jianshu.com/p/0da2939391cf AQS是JUC锁框架中最重要的类,通过它来实现独占锁和共享锁的.本章是对AbstractQueuedSynchro ...

  5. JUC锁框架_AbstractQueuedSynchronizer详细分析

    AQS是JUC锁框架中最重要的类,通过它来实现独占锁和共享锁的.本章是对AbstractQueuedSynchronizer源码的完全解析,分为四个部分介绍: CLH队列即同步队列:储存着所有等待锁的 ...

  6. JUC锁框架——AQS源码分析

    2019独角兽企业重金招聘Python工程师标准>>> JUC锁介绍 Java的并发框架JUC(java.util.concurrent)中锁是最重要的一个工具.因为锁,才能实现正确 ...

  7. 行级锁(悲观锁)的概念

    行级锁(悲观锁)的概念: 怎么样才会产生行级锁? 例如:select ename, job, sal from emp where job = 'Manager' for update; 在后面加了f ...

  8. JUC锁-框架与基本概念(一)

    框架与基本概念 在了解后面的内容之前,必须要先了解基本概念: AQS – 指AbstractQueuedSynchronizer类. AQS是java中管理"锁"的抽象类,锁的许多 ...

  9. Java并发编程—锁的基本概念

    在学习或者使用Java的过程中进程会遇到各种各样的锁的概念:公平锁.非公平锁.自旋锁.可重入锁.偏向锁.轻量级锁.重量级锁.读写锁.互斥锁等待.下边总结了对各种锁的解释 1.公平锁/非公平锁 公平锁是 ...

最新文章

  1. 《构建之法》问题与思考
  2. ansys fluent udf manual 下载_Fluent内置流固耦合01 使用流程
  3. 安装 | OpenCV4.2.0 + VS2017安装教程
  4. LeetCode 1114 按序打印
  5. 用redis解决超卖
  6. [react] React中在哪捕获错误?
  7. 阿里云能耗宝发布,助力中小企业绿色升级,参与碳中和万亿市场
  8. PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?
  9. 宫崎骏最美最经典的语录是什么?
  10. Linux系统中,各种小动物
  11. jsfl读取xml,图片,并生成swf
  12. OpenCart支付宝付款接口(直接到账、担保交易、双接口)
  13. VS 内存不能read—堆栈空间解决栈溢出问题
  14. MPMoviePlayerController 电影播放器—IOS开发
  15. 计算机无法计算,计算机无法计算到的F1最后一步
  16. 甬台温、温福铁路动车组时刻表
  17. 信息时代的管理信息系统
  18. bootstrapTable动态渲染数据获取
  19. Symantec赛门铁克官网下载地址
  20. ClickHouse插入频繁报错优化

热门文章

  1. 网站搜索引擎优化SEO策略及相关工具资源
  2. Android 网络协议
  3. HDU 3240 Counting Binary Trees 数论-卡特兰数
  4. [转载]与索引相关的概念---聚簇因子
  5. webkit-box translate 的组合--流畅的滑动体验
  6. [导入][你必须知道的.NET] 第三回:历史纠葛:特性和属性
  7. 关于mount nfs时-o nolock的问题
  8. 大数据之-Hadoop之HDFS的API操作_文件IO流_下载_案例---大数据之hadoop工作笔记0064
  9. Spring Security OAuth2.0_实现分布式认证授权_微服务解析令牌并鉴权_Spring Security OAuth2.0认证授权---springcloud工作笔记154
  10. Seata多微服务互相调用_全局分布式事物使用案例_Order-Module order微服务的配置搭建_写代码下---微服务升级_SpringCloud Alibaba工作笔记0062