线程池的参数 创建线程的方式 如何暂停线程,有几种方式 线程之间的通讯 线程中什么是原子性、什么是可见性、什么是有序性? Volatile是如何实现可见性的? AQS中共享锁有哪些?独占锁有哪些 synchronized 关键字有几种用法? synchronized 的缺点有哪些? 静态方法和非静态 ...
分类:
编程语言 时间:
2020-05-19 22:56:32
阅读次数:
104
当有多个事务同时更新一条sql时,mysql是如何处理的呢?很显然,使用加锁的方式,一个事务获得了锁,进行操作,其他事务排队一个个等着,等当前这个事务执行完释放锁,其他事务获取锁取到锁的进行操作。这里的锁就是独占锁,也就是X锁。 那么如果有查询这一行数据时,是要加锁吗?不是的,mysql为了提高性能 ...
分类:
数据库 时间:
2020-05-18 01:05:05
阅读次数:
117
一.ReentrantLock是什么 ReentrantLock是一个可重入的互斥锁(Reentrant就是再次进入的意思),又被称为“独占锁”。它添加了类似锁投票、定时锁等候和可中断锁等候的一些特性。 ReentrantLock在同一个时间点只能被一个线程获取(当某线程获取到“锁”时,其它线程就必 ...
分类:
其他好文 时间:
2020-05-13 11:40:01
阅读次数:
69
先把我主要学习参考的文章放上来先,这篇文章讲的挺好的,分析比较到位,最好是先看完这篇文章,在接下去看我写的。不然你会一脸懵逼,不过等你看完这篇文章,可能我的文章对你也用途不大了 深入分析AbstractQueuedSynchronizer独占锁的实现原理:ReentranLock 小弟我也是刚开始研 ...
分类:
其他好文 时间:
2020-05-04 00:32:08
阅读次数:
80
像之前我们说的 synchronized 这种独占锁属于悲观锁。什么是悲观锁呢?简单来说,它是在悲观的认为加锁的这个地方一定会发生冲突。除了悲观锁之后,还有乐观锁,乐观锁的含义就是我乐观的认为这个的地方不会发生冲突,如果没有发生冲突我就正常执行,如果发生了冲突,我就重试。 CAS(compare a ...
分类:
编程语言 时间:
2020-04-27 09:43:15
阅读次数:
65
独占锁:独占锁也叫排他锁,是指该锁一次只能被一个线程所持有。如果线程T对数据A加上排他锁后,则其他线程不能再对A加任何类型的锁。获得排它锁的线程即能读数据又能修改数据。 ReentrantLock 和 synchronized 都是独占锁 共享锁:共享锁是指该锁可被多个线程所持有。如果线程T对数据A ...
分类:
其他好文 时间:
2020-04-21 15:27:04
阅读次数:
87
答案是先下单再减库存 以 MySQL 作为 DB 为例,下订单就是 insert,在使用索引的情况下,insert 插入是行级锁,支持每秒 4W 的并发。减库存就是 update 操作,命中索引时也是行级锁,但是这是个独占锁,所有的操作都要等待前一个释放锁后才能继续 update。 问题就在这里,根 ...
分类:
其他好文 时间:
2020-04-19 01:01:34
阅读次数:
249
如下: 集群管理:监控节点存活状态,运行请求等。 主节点选举:主节点挂掉了之后可以从备用的节点开始新一轮选主,主节点选举说的就是这个选举的过程,使用 zookeeper 可以协助完成这个过程。 分布式锁:zookeeper提供两种锁:独占锁、共享锁。独占锁即一次只能占有一个线程使用资源,共享锁是读写 ...
分类:
其他好文 时间:
2020-03-26 19:10:31
阅读次数:
60
本次内容主要介绍AQS、AQS的设计及使用、ReentrantLock、ReentrantReadWriteLock以及手写一个可重入独占锁 1、什么是AQS? AQS,队列同步器AbstractQueuedSynchronizer的简写,JDK1.5引入的,是用来构建锁或者其他同步组件的基础框架, ...
分类:
编程语言 时间:
2020-03-23 09:48:43
阅读次数:
73
互斥条件:一个资源每次只能被一个进程使用。 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 锁的类别有两种 1. 从数据库系统的角度来看:分为独占锁(即 ...
分类:
其他好文 时间:
2020-03-18 21:40:25
阅读次数:
62