Q:为什么要用锁?什么样的业务场景下需要用锁? 就拿之前的工单系统来说,当审批方式为角色组审批时,代表该角色组内任意一人审批即可,这时,该角色组内成员的系统上都是可以显示审批按钮,如果此时A审批员和B审批员都同时审批了同一工单,有可能会出现不一样的审批结果,即使审批意见是一致的,多人操作也会增加对数 ...
分类:
编程语言 时间:
2019-07-14 15:04:37
阅读次数:
116
10.锁悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等, ...
分类:
其他好文 时间:
2019-07-09 00:10:26
阅读次数:
86
线程同步机制 线程同步机制是一套用于协调线程间的数据访问及活动的机制。该机制用于保障线程安全及实现这些线程的共同目标。 java平台提供的线程同步机制: 锁 volatile关键字 final关键字 static关键字 其他(如:Object.wait()/Object.notify()等) 锁机制 ...
分类:
其他好文 时间:
2019-07-07 12:43:29
阅读次数:
112
内置锁 内置锁 Java提供一种内置的锁机制提供原子性:同步代码块(synchronized),synchronized锁包含两部分,锁的对象引用和锁保护的代码块。 方法同步代码块锁的是方法调用所在的对象,静态方法同步代码块锁的是Class对象。同一对象的方法同步代码块和静态方法同步代码块是两把锁, ...
分类:
编程语言 时间:
2019-07-06 20:59:44
阅读次数:
161
自增锁模式 在MYSQL 5.1.22版本前,自增列使用AUTO_INC Locking方式来实现,即采用一种特殊的表锁机制来保证并发插入下自增操作依然是串行操作,为提高插入效率,该锁会在插入语句完成后立即释放,而不是插入语句所在事务提交时释放。该设计并发性能太差,尤其在大批量数据在一条语句中插入时 ...
分类:
数据库 时间:
2019-07-03 00:47:15
阅读次数:
195
线程同步条件 形成队列+锁机制 问题 上下文切换和调度延时,引起性能问题。 如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置。 synchronnized synchronnized方法和synchronnized块 目标要对+效率要高 同步方法:锁的是对象的资源 如果要锁的不变量 ...
分类:
编程语言 时间:
2019-07-02 21:01:45
阅读次数:
113
一、锁概述 1、相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如, (1)MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking); (2)BDB存储引擎采用的是页面锁(page-level locking),但也 ...
分类:
数据库 时间:
2019-06-30 17:33:19
阅读次数:
136
ES是基于乐观锁进行并发控制的。 如果有并发的业务场景,可以直接使用ES内置乐观锁机制。 使用的时候,java程序需要先Get指定的记录,获取到版本号,然后Put的时候,带着该版本号,请求更新。 ES只有判断到 该记录的 version = 请求中的version值 时,才能进行更新。如果不相等,则 ...
分类:
其他好文 时间:
2019-06-16 21:51:51
阅读次数:
148
第1章 Mysql 简介1.1 概述1.2 高级 MySQL第2章 Mysql Linux 版的安装2.1 下载地址2.2 检查当前系统是否安装过 mysql2.3 修改 Mysql 配置文件位置2.4 修改字符集和数据存储路径2.5 MySQL 的安装位置说明2.6 Mysql 配置文件说明2.7 ...
分类:
数据库 时间:
2019-06-15 12:04:23
阅读次数:
162
一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。(读取值时强行获取主内存中的值,设置值时将工作内存的数据刷新到主内存中)2)禁止进行指令重排序。注意:不具备原子性,使用也有很多限制,需要原子性则可以使用juc的锁机制,如:synchro
分类:
其他好文 时间:
2019-06-14 17:55:51
阅读次数:
133