一.概述 在数据库中,数据是属于共享资源,为了保证并发访问的一致性,有效性,产生了锁。接下来重点讨论mysql锁机制的特点,常见的锁问题,以及解决mysql锁问题的一些方法或建议。 相比其他数据库,mysql 锁机制比较简单,显著的特点是 不同的存储引擎支持不同的锁机制。在innodb中支持行锁和表 ...
分类:
数据库 时间:
2018-07-23 18:01:00
阅读次数:
228
1、redis中使用WATCH实现锁机制,是最次之的方式。WATCH只会在数据被其他客户端抢先修改了的情况下,“通知”执行了这个命令的客户端,而不会阻止其他客户端对数据进行修改。此类锁成为“乐观锁” 2、redis提供SETNX命令确实具有基本的加锁功能,但他的功能并不完整,并且也不具备分布式锁常见 ...
分类:
其他好文 时间:
2018-07-22 12:56:19
阅读次数:
130
并发包中的原子类可以解决类似num++这样的复合类操作的原子性问题,相比锁机制,使用原子类更精巧轻量,性能开销更小,下面就一起来分析下原子类的实现机理。 悲观的解决方案(阻塞同步) 我们知道,num++看似简单的一个操作,实际上是由1.读取 2.加一 3.写入 三步组成的,这是个复合类的操作(所以我 ...
分类:
编程语言 时间:
2018-07-16 21:40:30
阅读次数:
216
wait() notify() notifyAll() 这3个方法用于协调多个线程对共享数据的存取,所以必须在synchronized语句块中使用。 wait() 必须在synchronized函数或者代码块里面,wait()会让已经获得synchronized函数或者代码块控制权的Thread暂时 ...
分类:
编程语言 时间:
2018-07-13 15:10:03
阅读次数:
157
java一日一条 6月21日 首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 ...
分类:
编程语言 时间:
2018-07-13 12:12:29
阅读次数:
157
自己对于锁机制了解的并不深入,所以翻阅了资料,整理一下自己所了解的锁吧。 ...
分类:
其他好文 时间:
2018-07-10 16:51:18
阅读次数:
546
①引言 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 (2)一个线程持有锁会导致其它所有需要此锁的线程挂起。 (3)如果一个优先级高的线程等待一个优先 ...
分类:
编程语言 时间:
2018-07-05 18:21:56
阅读次数:
149
如何搭建SpringBoot微服务 ThreadPoolExecutor线程池的使用 ReentrantLock和Synchronized的使用场景 数据库锁机制(悲观锁、乐观锁) 分布式锁(RedissLock、Zookeeper) 进程内消息队列(LinkedBlockingQueue、Arra ...
分类:
其他好文 时间:
2018-07-05 16:03:55
阅读次数:
107
昨天的 Java 实现单例模式 中,我们的双重检验锁机制因为指令重排序问题而引入了 volatile 关键字,不少朋友问我,到底为啥要加 volatile 这个关键字呀,而它,到底又有什么神奇的作用呢? 对 volatile 这个关键字,在昨天的讲解中我们简单说了一下:被 volatile 修饰的共 ...
分类:
编程语言 时间:
2018-07-04 14:30:02
阅读次数:
160
集合 1. Array(数组): 分配在连续内存中,不能随意扩展,数组中数值类型必须是一致的。数组的声明有两种形式:直接定义长度,然后赋值;直接赋值。 缺点:插入数据慢。 优点:性能高,数据再多性能也没有影响 特别注意:Array不是线程安全,在多线程中需要配合锁机制来进行,如果不想使用锁,可以用C ...
分类:
编程语言 时间:
2018-06-30 23:44:13
阅读次数:
241