一、内置锁sync 和 显示锁lock概念

1、synv锁又叫内置锁,不能中断,拿不到无限等待即阻塞;

java自带关键字;

隐式可重入;

重入锁:锁对应对象要多次调用对应方法,如递归

2、

lock的lockinterruptiply意思是可中断的;语言层面的接口;

其实现类reentrantlock 可重入锁,sync锁显示对应,可以理解为sync关键字在lock接口下的实现;

3、重入锁:锁对应对象要多次调用对应方法,如递归;

可重入锁,sync内置锁,多次获取和释放,计数器加1减1,方法结束则释放和减1

4、公平锁和非公平锁

公平锁是先到先得,对资源请求先到先得;

无特殊要求,就是用sync内置锁;

非公平锁效率高的原理:

挂起是暂时移除cpu缓存,不是阻塞,阻塞是等待某一条件;

因为B挂起状态解除需要时间,所以非公平锁效率更高;

reentrantLock构造不传true,默认是非公平锁:

5、读写锁,比一般排他锁性能高,但是写线程访问时候其他读和写线程都会被阻塞:

即会有资源竞争,虽然不是同一个锁,但会拦截其他的锁;

二、读写锁性能提示代码实现

1.实体类

2.业务类,方法

3、主线程,主要作用创建若干个线程

4.1、sync关键字内置锁

4.2、读写锁实现

结果是 显示锁读写锁 性能 远胜于 sync关键字内置锁;

三、显示锁lock锁的等待和通知:Condition接口

1、概念

sync内置锁都是对锁对象而言,每个属性的变化都会改变该对象,尽量使用notifyAll通知唤醒,防止信号丢失;wait 是Object的方法;

lock显示锁的等待通知是使用的它的Condition接口,通知尽量使用signal,而不是signalAll,一个lock显示锁可以new出多个condition,可以每个属性对应一个condition等待通知,所以使用signal,具体通知唤醒到哪个正在await的condition;

2、代码实现

2.1 两个lock显示锁各new一个condition:

要同步的方法里面都是先获取锁,类似兵符,得先拿到兵符才能进入方法调兵遣将;

2.2一个lock显示锁new多个condition

结果一样,其余代码同sync锁那得快递案列,城市和公里数两个属性;

显示锁lock的更多相关文章

  1. 6.显示锁Lock 和 线程通信Condition

    显示锁 Lock 一.用于解决多线程 安全问题的方式: synchronized:   1.同步代码块      2.同步方法 jdk1.5 后:第三种:同步锁Lock  (注意:同步(synchro ...

  2. 显式锁(二)Lock接口与显示锁介绍

    一.显式锁简介    显式锁,这个叫法是相对于隐式锁synchronized而言的,加锁和解锁都要用户显式地控制.显示锁Lock是在Java5中添加到jdk的,同synchronized一样,这也是一 ...

  3. 6、JUC--同步锁Lock

    显示锁 Lock  在Java 5.0之前,协调共享对象的访问时可以使用的机 制只有 synchronized 和 volatile .Java 5.0 后增加了一些 新的机制,但并不是一种替代内置 ...

  4. Java 显示锁 之 队列同步器AQS(六)

    1.简述 锁时用来控制多个线程访问共享资源的方式,一般情况下,一个锁能够防止多个线程同时访问共享资源.但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁. 在Java 5.0之前,在协调对共享对 ...

  5. Java并发(基础知识)——显示锁和同步工具类

    显示锁                                                                                     Lock接口是Java ...

  6. 同步锁Lock & 生产者和消费者案例

    显示锁 Lock ①在 Java 5.0 之前,协调共享对象的访问时可以使用的机 制只有 synchronized 和 volatile . Java 5.0 后增加了一些 新的机制,但并不是一种替代 ...

  7. 多线程安全问题之Lock显示锁

    package com.hls.juc; import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.Reentr ...

  8. Java中的显示锁 ReentrantLock 和 ReentrantReadWriteLock

    在Java1.5中引入了两种显示锁,分别是可重入锁ReentrantLock和可重入读写锁ReentrantReadWriteLock.它们分别实现接口Lock和ReadWriteLock.(注意:s ...

  9. Java并发——显示锁

    Java提供一系列的显示锁类,均位于java.util.concurrent.locks包中. 锁的分类: 排他锁,共享锁 排他锁又被称为独占锁,即读写互斥.写写互斥.读读互斥. Java的ReadW ...

随机推荐

  1. 一口气说出 Redis 16 个常见使用场景!

    1.缓存 String类型 例如:热点数据缓存(例如报表.明星出轨),对象缓存.全页缓存.可以提升热点数据的访问数据. 文章首发于:http://ht5n8.cn/LEc6v 2.数据共享分布式 St ...

  2. (11)MySQL进阶篇SQL优化(InnoDB锁问题排查与解决)

    1.概述 前面章节之所以介绍那么多锁的知识点和示例,其实最终目的就是为了排查与解决死锁的问题,下面我们把之前学过锁知识重温与补充一遍,然后再通过例子演示下如果排查与解决死锁. 2.前期准备 ●数据库事 ...

  3. JAVA集合体系之-开篇

    JAVA的集合体系是个庞大的知识体系,里面涵盖了,如数组结构,链表,红黑树,排序算法,线程安全等等知识点,接下来将会使用一系列的分享文章整理自己的学习心得,留的温故而知新.下图是整理出来的JAVA集合 ...

  4. 解析java源文件

    尝试从java源文件中解析出类.方法.属性等信息,但下面的代码没有完全实现. Sub parseJava() Dim package_name as String 'read a file Docum ...

  5. Clipboard Manager on Xfce

    Clipman-plugin sudo apt-get install xfce4-clipman-plugin No config function. No hotkey. Very basic f ...

  6. eclipse选中参数高亮显示设置

    window - preference - java - Editor - Mark Occurrences

  7. 附件携马之CS免杀shellcode过国内主流杀软

    0x01 写在前面 其实去年已经写过类似的文章,但是久没用了,难免有些生疏.所谓温故而知新,因此再详细的记录一下,一方面可以给各位看官做个分享,另一方面等到用时也不至于出现临阵磨枪的尴尬场面. 0x0 ...

  8. NOIP 模拟 $26\; \rm 神炎皇$

    题解 \(by\;zj\varphi\) 一道 \(\varphi()\) 的题. 对于一个合法的数对,设它为 \((a*m,b*m)\) 则 \(((a+b)*m)|a*b*m^2\),所以 \(( ...

  9. 题解 Connect

    传送门 各种骗分无果,特殊性质还手残写挂了-- 首先完全图上直接输出边权 \(\times (n-2)\) 就行了,然而我脑残乘的 \(n-1\) 看数据范围肯定是状压,但是压边肯定炸了,考虑压点 因 ...

  10. spring cloud 项目

    ### 项目需求 客户端:针对普通用户,用户登录.用户退出.菜品订购.我的订单. 后台管理系统:针对管理员,管理员登录.管理员退出.添加菜品.查询菜品.修改菜品.删除菜品.订单处理.添加用户.查询用户 ...