分布式锁 为了保证一个方法或属性在高并发情况下的同一时间只能被一个线程访问,在单机部署的情况下,可以使用ReentrantLock或Synchronized进行互斥控制。随着发展,单机部署的系统已经不能满足业务的需要,越来越多的系统进化成分布式集群系统,原本在单机运行的锁控制已经不能实现“一个方法或 ...
分类:
其他好文 时间:
2019-12-16 10:02:13
阅读次数:
86
要深入了解java并发知识,AbstractQueuedSynchronizer(AQS)是必须要拿出来深入学习的,AQS可以说是贯穿了整个JUC并发包,例如ReentrantLock,CountDownLatch,CyclicBarrier等并发类都涉及到了AQS。接下来就对AQS的实现原理进行分 ...
分类:
编程语言 时间:
2019-12-15 18:40:11
阅读次数:
107
java 基本运算 各种运算符 用法等 进位 二进制 左移 右移 多线程基础 多线程进阶 线程池 java原子性操作等基础 java的concurrent包 以及各种java自带系统属性的理解和应用 volitale Synchronized ReentrantLock transientjava的 ...
分类:
其他好文 时间:
2019-12-13 19:30:37
阅读次数:
76
1、概述 1.1、jdk5之前,用于 调节共享对象访问机制 只有 synchronized、volatile; jdk5之后,提供了 显示锁:Lock、ReentrantLock...; 显式锁 并不是 内部锁机制 的替代,而是 当内部锁被证明受到局限时,提供可选择的高级特性; 1.2、 ...
分类:
编程语言 时间:
2019-12-13 12:05:47
阅读次数:
87
故事起源于上次阿里电面的3个问题。问题1,jvm中线程分为哪些状态。问题2,在执行Thread.start()方法后,线程是不是马上运行。问题3,java中的synchronized和ReentrantLock有什么不同。当时我的回答不是很好,就不说了,面试之后,在网上搜了很多文章,对照着jdk源码 ...
分类:
其他好文 时间:
2019-12-11 19:35:01
阅读次数:
93
1. 如何使用 ReentrantLock 中的 可中断锁防止死锁? 答: 在 执行语句前 加 可中断锁,此时,当被打断时,会抛出 被中断异常,这样就可以解锁。 注意:要外部中断,死锁中的线程不会自己中断 public class ReentrantLockTest { static Lock lo ...
分类:
其他好文 时间:
2019-12-10 22:37:52
阅读次数:
116
我们使用的synchronized加的锁是可以延续使用的,如下: public void test() { //第一次获得锁 synchronized(this) { while(true) { //第二次获得同样的锁 synchronized(this) { System.out.println( ...
分类:
编程语言 时间:
2019-12-09 19:07:54
阅读次数:
79
前言 AQS即AbstractQueuedSynchronizer,是JUC包中的一个核心抽象类,JUC包中的绝大多数功能都是直接或间接通过它来实现的。本文是AQS系列的第一篇,后面会持续更新多篇,争取将JUC包中AQS相关的常用功能讲清楚,一方面巩固自己的知识体系,一方面亦可与各位园友互相学习。寒 ...
分类:
其他好文 时间:
2019-12-07 23:22:00
阅读次数:
123
简介: AQS全称 AbstractQueuedSynchronizer,提供了一个基于FIFO(先进先出)队列,可以用于构建锁或者其他相关同步装置的基础框架。 ReentrantLock、Semaphore、CountDownLatch、FutrueTask,这些都是基于AQS构建的。 而AQS是 ...
分类:
编程语言 时间:
2019-12-04 23:40:01
阅读次数:
126
Java锁原理学习 为了学习Java锁的原理,参照ReentrantLock实现了自己的可重入锁,代码如下: 先上AQS的相关方法: 以下是自己实现的MyLock: 测试程序: ...
分类:
编程语言 时间:
2019-12-03 01:45:31
阅读次数:
107