synchronized还可以应用在静态方法上,如果这么写,则代表的是对当前.java文件对应的Class类加锁。看一下例子,注意一下printC()并不是一个静态方法: 写三个线程分别调用这三个方法: 写个main函数启动这三个线程: 看一下运行结果: 从运行结果来,对printC()方法的调用和 ...
分类:
其他好文 时间:
2018-05-29 17:47:10
阅读次数:
192
Phaser,阶段器,可作为一个可复用的同步屏障,与CyclicBarrier和CountDownLatch类似,但更强大。 ...
分类:
其他好文 时间:
2018-05-28 00:48:43
阅读次数:
218
let user = [ ["a", 1, 1000], ["b", 2, 2000], ["c", 3, 3000] ] //登录不加锁卡 function login() { let status = true; while (status) { console.log("请输入用户名:"); ... ...
分类:
编程语言 时间:
2018-05-27 22:10:52
阅读次数:
213
在Java5.0之前,只有synchronized(内置锁)和volatile. Java5.0后引入了显示锁ReentrantLock. ReentrantLock概况 ReentrantLock是可重入的锁,它不同于内置锁, 它在每次使用都需要显示的加锁和解锁, 而且提供了更高级的特性:公平锁, ...
分类:
其他好文 时间:
2018-05-27 00:57:32
阅读次数:
156
事务 1、定义:所有操作必须成功完成,否则在每个操作中所作的所有更改都会备撤销。 2、事务的ACID 原子性atomicity 一致性consistency 隔离性isolation 持续性durability 2-1、原子性: 事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 2 ...
分类:
数据库 时间:
2018-05-26 15:31:14
阅读次数:
222
在Java5.0之前,只有synchronized(内置锁)和volatile. Java5.0后引入了显示锁ReentrantLock. ReentrantLock概况 ReentrantLock是可重入的锁,它不同于内置锁, 它在每次使用都需要显示的加锁和解锁, 而且提供了更高级的特性:公平锁, ...
分类:
其他好文 时间:
2018-05-25 22:47:29
阅读次数:
175
本课主题 Task执行内幕与结果处理解密 引言 这一章我们主要关心的是 Task 是怎样被计算的以及结果是怎么被处理的 了解 Task 是怎样被计算的以及结果是怎么被处理的 Task 执行原理流程图 [下图是Task执行原理流程图] ShuffleMapTask: ShuffleMapTask 在计 ...
分类:
其他好文 时间:
2018-05-24 18:17:05
阅读次数:
193
一、分布式锁介绍 分布式锁主要用于在分布式环境中保护跨进程、跨主机、跨网络的共享资源实现互斥访问,以达到保证数据的一致性。 线程锁:大家都不陌生,主要用来给方法、代码块加锁。当某个方法或者代码块使用锁时,那么在同一时刻至多仅有有一个线程在执行该段代码。当有多个线程访问同一对象的加锁方法/代码块时,同 ...
分类:
其他好文 时间:
2018-05-24 18:03:32
阅读次数:
178
一.根据案例二:不同索引加锁顺序的问题,模拟重现死锁(详细操作步骤) 1.RR级别下,更新操作默认会加行级锁,行级锁会对索引加锁 2.如果更新语句使用多个索引,行级锁会先锁定普通索引,再锁定聚簇索引 3.如果两个SQL用到了不同的普通索引,或者一个用了,另外一个没用 4.会导致这两个SQL加行级锁的 ...
分类:
数据库 时间:
2018-05-23 02:04:31
阅读次数:
238
今天我们介绍一下ConcurrentHashMap在JDK1.8中的实现。基本结构 ConcurrentHashMap在1.8中的实现,相比于1.7的版本基本上全部都变掉了。首先,取消了Segment分段锁的数据结构,取而代之的是数组+链表(红黑树)的结构。而对于锁的粒度,调整为对每个数组元素加锁( ...
分类:
其他好文 时间:
2018-05-22 15:08:18
阅读次数:
221