DDL执行 线上服务器执行DDL,更新表结构,需要谨慎,结构更改会导致全表被独占锁定(新版本有改善) 避免这种情况,使用COPY策略,而不是直接执行ALTER TABLE语句 思路:创建一个新表,满足新要求,将旧表数据逐条导入新表,同时表上可以执行其他任务,导入的过程其他任务都记录在日志,导入完成后 ...
分类:
数据库 时间:
2020-03-18 20:15:58
阅读次数:
73
AQS介绍 AbstractQueuedSynchronizer简称AQS,即队列同步器。它是JUC包下面的核心组件,它的主要使用方式是继承,子类通过继承AQS,并实现它的抽象方法来管理同步状态,它分为独占锁和共享锁。很多同步组件都是基于它来实现的,比如我门常见的ReentrantLock,它是基于 ...
分类:
其他好文 时间:
2020-02-29 18:57:36
阅读次数:
81
Semaphore信号量Semaphore是一个控制访问多个共享资源的计数器,本质上是一个共享锁Java并发提供了二种加锁模式:共享锁和独占锁。ReentrantLock是独占锁,每次只能有一个线程持有,共享锁运行多个线程... ...
分类:
其他好文 时间:
2020-02-28 12:07:48
阅读次数:
53
上一篇我们看了一下这个队列ConcurrentLinkedQueue,那就是一个无界非阻塞链表,我们这次来看看LinkedBlockingQueue,这个队列看名字就知道是一个阻塞式队列(也就是一个单向链表),基于独占锁实现的,比较简单; 一.LinkedBlockingQueue基本结构 内部也是 ...
分类:
数据库 时间:
2020-02-08 22:04:59
阅读次数:
108
共享锁(S锁):又称为读锁,可以查看但无法修改和删除的一种数据锁。如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁。获准共享锁的事务只能读数据,不能修改数据。 共享锁下其它用户可以并发读取,查询数据。但不能修改,增加,删除数据。资源共享. 排它锁(X锁):又称为写锁、独占锁 ...
分类:
其他好文 时间:
2020-02-03 18:48:25
阅读次数:
81
常用概念线程安全停止线程守护线程多线程通讯锁Synchornized悲观锁乐观锁共享锁/独占锁读写锁的机制死锁LockReentrantLockConditionCountDownLatchCyclicBarrier信号量SemaphoreThreadLocal高并发线程安全与不安全的类不安全的sp... ...
分类:
编程语言 时间:
2020-01-28 12:26:58
阅读次数:
74
两个锁都是依赖AQS实现的,方法基本是Sync的封装,主要看Sync的设计实现, 一、可重入独占锁ReentrantLock 1.静态内部抽象类Sync //继承AQS abstract static class Sync extends AbstractQueuedSynchronizer { p ...
分类:
其他好文 时间:
2020-01-22 18:18:05
阅读次数:
111
概述 ReentrantLock是一个可重入的互斥锁,也被称为独占锁。它支持公平锁和非公平锁两种模式。 ReentrantLock的使用方法 下面看一个最初级的例子: 在进入方法后,在需要加锁的一些操作执行之前需要调用lock方法,在jdk文档中对lock方法详细解释如下: 获得锁。 如果锁没有被另 ...
分类:
其他好文 时间:
2020-01-17 18:47:35
阅读次数:
67
什么是AQS? AQS即 ,是一个用于构建锁和同步器的框架。它能降低构建锁和同步器的工作量,还可以避免处理多个位置上发生的竞争问题。在基于AQS构建的同步器中,只可能在一个时刻发生阻塞,从而降低上下文切换的开销,并提高吞吐量。 AQS支持独占锁(exclusive)和共享锁(share)两种模式。 ...
分类:
其他好文 时间:
2020-01-17 17:31:47
阅读次数:
114
前言说到CAS(CompareAndSwap),不得不先说一说悲观锁和乐观锁,因为CAS是乐观锁思想的一种实现。悲观锁:总是很悲观的认为,每次拿数据都会有其他线程并发执行,所以每次都会进行加锁,用完之后释放锁,其他的线程才能拿到锁,进而拿到资源进行操作。java中的synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。乐观锁:总是很乐观认为,自己拿到数据操作的时候,没有
分类:
其他好文 时间:
2020-01-03 22:56:36
阅读次数:
75