Easter79 Easter79
3年前
synchronized 代码块怎么用
!(http://www.liebrother.com/upload/d84c8330b13b46588a58382158eeec87_image.png)加不加synchronized有什么区别?(https://my.oschina.net/liebrother/blog/4253687)synchronized作为悲观锁,锁住了
简
4年前
数组越界导致系统重启的案例
一.问题描述引言一般数组越界问题,往往是涉及多线程并发的情况下,某个或多个临界资源(比如类或对象的成员变量)多线程并发读写而导致的异常。出现这样情况,一般是该保护的地方没有用同步锁保护,或者是用错了同步锁,这类问题比较常规。但本文要分享的案例却是一个方法内的临界资源已被加锁保护的情况下仍然出现的数组越界问题,导致system\server挂掉,手
Wesley13 Wesley13
3年前
java 面试知识点笔记(十)多线程与并发
问:线程安全问题的主要诱因?1.存在共享数据(也称临界资源)2.存在多条线程共同操作这些共享数据解决方法:同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作互斥锁的特征:1.互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程协调机制,这样在同一时间只有一
Wesley13 Wesley13
3年前
1 面试题之多线程、锁
大纲:!(https://oscimg.oschina.net/oscnet/up8e01bd5ababcc60019e69eca355d0783b31.png)一、线程相关①进程与线程的区别:(重点掌握)!(https://oscimg.oschina.net/oscnet/
Easter79 Easter79
3年前
TiDB 性能竞赛 11.16
TiDB实现了快照隔离级别的分布式事务,支持悲观锁、乐观锁,同时也解决了大事务的难点。事务是数据库的基础,提供高效的、支持完整ACID的分布式事务更是分布式数据库的立足之本。事务是数据库执行的最小单元,允许用户将多个读写操作组合为一个逻辑单元。事务需要满足原子性、一致性、隔离性和持久性,也就是ACID。数据库有多种并发控制方法,乐观并发控制(
Easter79 Easter79
3年前
TiDB 最佳实践系列(三)乐观锁事务
作者:ShirlyTiDB最佳实践系列是面向广大TiDB用户的系列教程,旨在深入浅出介绍TiDB的架构与原理,帮助用户在生产环境中最大限度发挥TiDB的优势。我们将分享一系列典型场景下的最佳实践路径,便于大家快速上手,迅速定位并解决问题。在前两篇的文章中,我们分别介绍了TiDB高并发写入常见热点问题及规避方法(https:/
Wesley13 Wesley13
3年前
JAVA中 ReentrantReadWriteLock读写锁详系教程,包会
一、读写锁简介现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写的操作了。 针对这种场景,JAVA的并发包提供了读写锁ReentrantReadW
Wesley13 Wesley13
3年前
MySQL事务未提交导致整个表锁死
问题及说明:当一个SQL事务执行完了,但未COMMIT,后面的SQL想要执行就是被锁,超时结束;报错信息如下:mysqlERROR1205(HY000):Lockwaittimeoutexceeded;tryrestartingtransaction处理步骤:该问题发生环境为MySQL(h
Wesley13 Wesley13
3年前
04.JUC 集合
基本概念LinkedBlockingQueue是一个用链表实现的有界阻塞队列。LinkedBlockingQueue按照先进先出的原则对元素进行排序。LinkedBlockingQueue采用了双锁、双条件队列来提高读写效率。内部构造LinkedBlockingQueue内部维
redis分布式锁,setnx+lua脚本的java实现 | 京东物流技术团队
本文是基于redis缓存实现分布式锁,其中使用了setnx命令加锁,expire命令设置过期时间并lua脚本保证事务一致性。Java实现部分基于JIMDB提供的接口