1.数据库的锁作用 主要防止幻读,脏读,不可重复读,处理数据库并发。 2.锁的分类 a.根据锁的粒度来分,有行级锁以及表级锁。 <1>表级锁:MyIsam就是用的表级锁,它是偏向读的,在执行select查询操作的时候,会自动给涉及的表加上读锁,总所周知,读锁会阻塞写,所以当一个线程在读时,其他人是可 ...
分类:
数据库 时间:
2018-11-05 23:36:00
阅读次数:
349
在协调共享对象的访问时可以使用的机制有synchronized和volatile。java 5.0新增了一种新的机制:ReentrankLock。 ReentrankLock并不是一种替代内置加锁的方法,而是当内置加锁机制不适用时,作为一种可选择的高级功能。与无条件的锁获取模式相比,它具有更完善的错 ...
分类:
编程语言 时间:
2018-11-03 12:39:24
阅读次数:
164
悲观锁 对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。【数据锁定:数据将暂时不会得到修改】,(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程),传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等 ...
分类:
其他好文 时间:
2018-10-28 15:01:22
阅读次数:
142
悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。 传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 Java中synchronized和ReentrantL ...
分类:
其他好文 时间:
2018-10-21 14:19:53
阅读次数:
213
一、Redis 事务与锁机制 1.Redis的基础事务 在Redis中开启事务的命令是 multi 命令, 而执行事务的命令是 exec 命令。multi 到 exec 命令之间的 Redis 命令将采取进入队列的形式,直至 exec 命令的出现,才会一次性发送队列里的命令去执行,而在执行这些命令的 ...
分类:
编程语言 时间:
2018-10-15 20:30:27
阅读次数:
164
摘自:https://www.cnblogs.com/protected/p/6526857.html 关于数据库的各种锁的总结: 1.共享锁(又称读锁)、排它锁(又称写锁): InnoDB引擎的锁机制:InnoDB支持事务,支持行锁和表锁用的比较多,Myisam不支持事务,只支持表锁。 共享锁(S ...
分类:
数据库 时间:
2018-10-15 12:01:57
阅读次数:
161
之前的文章讲了ReentrantLock和synchronized都是通过锁来保证线程安全的,锁机制存在一些问题,例如: ? 在多线程的竞争下,加锁、释放锁会导致很多线程的上下文切换和调度,对性能有一定的影响; ? 一个线程持有锁会导致其他需要此锁的线程挂起(强行在锁的区域将并行变为串行); ? 使 ...
分类:
其他好文 时间:
2018-10-11 15:16:07
阅读次数:
157
线程同步 什么是线程同步 线程之间执行是有先后顺序的,一个线程要等待上一个线程执行完之后才开始执行当前的线程。 为什么要线程同步 java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,所以需要线程同步执行,保证了该变量的唯一 ...
分类:
编程语言 时间:
2018-10-10 19:07:12
阅读次数:
133
InnoDB 锁机制 InnoDB存储引擎支持行级锁 其大类可以细分为共享锁和排它锁两类 共享锁(S):允许拥有共享锁的事务读取该行数据。当一个事务拥有一行的共享锁时,另外的事务可以在同一行数据也获得共享锁,但另外的事务无法获得同一行数据上的排他锁 排它锁(X):允许拥有排它锁的事务修改或删除该行数 ...
分类:
数据库 时间:
2018-10-09 18:15:36
阅读次数:
271
自旋锁 自旋锁(spinlock)是用在多个CPU系统中的锁机制,当一个CPU正访问自旋锁保护的临界区时,临界区将被锁上,其他需要访问此临界区的CPU只能忙等待,直到前面的CPU已访问完临界区,将临界区开锁。自旋锁上锁后让等待线程进行忙等待而不是睡眠阻塞,而信号量是让等待线程睡眠阻塞。自旋锁的忙等待 ...
分类:
系统相关 时间:
2018-10-08 10:19:11
阅读次数:
164