synchronized synchronized关键字锁定的是对象不是代码块,demo中锁的是object对象的实例 锁定的对象有两种:1.类的实例 2.类对象 加synchronized关键字之后不一定能实现线程安全,具体还要看锁定的对象是否唯一。 看个demo: private int cou ...
分类:
其他好文 时间:
2020-04-20 23:38:27
阅读次数:
64
一、Lock接口 Lock接口提供了一些方法,比如lock(),tryLock()等方法,像ReentrantLock就是基于队列同步器来实现的 二、AbstractQueuedSynchronizer 1.什么是队列同步器 队列同步器是一个抽象类,提供了实现线程队列获取同步状态的一系列方法(简单理 ...
分类:
其他好文 时间:
2020-04-17 23:22:08
阅读次数:
87
前言 最近在复习锁这一块,对java中的锁进行整理,本文介绍各种锁,希望给大家带来帮助。 Java的锁 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出 ...
分类:
编程语言 时间:
2020-04-12 18:51:51
阅读次数:
69
1. 锁的分类与实现 2. 具体实现 可重入锁: 可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,在进入内层方法会自动获取锁。 偏向锁/轻量级锁/重量级锁: 偏向锁:指一段同步代码一直被一个线程所访问,那么该线程会自动获取锁。降低获取锁的代价。 轻量级锁:指当锁是偏向锁的时候,被另一个线 ...
分类:
编程语言 时间:
2020-04-12 16:43:30
阅读次数:
80
1. 什么是reentrantlock? Reentrantlock 顾名思义重入锁,表示这个锁是可以重复进入的,你可能要问了,什么情况下才可以重复进入呢? Good question, 重入的意思是:当一个线程持有某个锁的时候,在它没有释放锁之前去干的其他的事情,那么当他干完其他的事情之后,它不需 ...
分类:
其他好文 时间:
2020-04-12 16:07:01
阅读次数:
53
今天三个部分的知识、递归锁(解决同步锁造成的锁死现象)、同步对象(类似一个锁,使两个线程之间进行同步)、信号量(控制线程数量的一个锁),悄悄的说一下,算上昨天的同步锁,虽然已经讲了四种锁了,但是据说总共是有五种锁的,最后一个我还不知道是个啥。 一、递归锁 昨天引入了同步锁的概念,但是因为同步锁的引入 ...
分类:
编程语言 时间:
2020-04-10 00:19:10
阅读次数:
59
分布式锁简介 分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现。 分布式锁可以保证在分布式系统中,同一操作只被一台机器上的一个线程执行,保证共享数据的一致性。 分布式锁的设计要求 要是可重入锁(避免死锁) 要有高可用的获取锁、释放锁功能 获取锁、释放锁的性能要好 使用redis实现 ...
分类:
其他好文 时间:
2020-04-09 12:35:22
阅读次数:
65
可重入读写锁 ReentrantReadWriteLock 其实基本上模拟了文件的读写锁操作。ReentrantReadWriteLock 和ReentrantLock 的差别还是蛮大的; 但是也有很多的相似之处; ReentrantReadWriteLock 的 writerLock 其实就是相当 ...
分类:
其他好文 时间:
2020-04-09 00:32:27
阅读次数:
70
在看LinkedBlockingQueue的时候,有这么一句话:LinkedBlockingQueue采用可重入锁(ReentrantLock)来保证在并发情况下的线程安全。 因此,在这进行学习一下什么叫可重入锁。 一:java可重入锁-ReentrantLock实现细节 ReentrantLock ...
分类:
其他好文 时间:
2020-04-08 22:36:21
阅读次数:
67
前言 ReentrantLock 可重入锁,应该是除了 synchronized 关键字外用的最多的线程同步手段了,虽然JVM维护者疯狂优化 synchronized 使其已经拥有了很好的性能。但 ReentrantLock 仍有其存在价值,例如可以感知线程中断,公平锁模式,可以指定超时时间的抢锁等 ...
分类:
编程语言 时间:
2020-04-07 19:58:23
阅读次数:
61