ConcurrentHashMap 源码详细分析(JDK1.8) 1. 概述 《HashMap 源码详细分析(JDK1.8)》: Java7 整个 ConcurrentHashMap 是一个 Segment 数组,Segment 通过继承 ReentrantLock 来进行加锁,所以每次需要加锁的操 ...
分类:
其他好文 时间:
2019-05-25 09:33:48
阅读次数:
86
ReentrantLock简介 ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁, 支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。 ReentrantLock还支持公平锁和非公平锁两种方式。 那么,要想完完全全的弄 ...
分类:
编程语言 时间:
2019-05-22 15:54:26
阅读次数:
137
/单例模式:C1getInstance和m_instance必是static变量,C2m_instance必被明确的初始化。C3构造函数与拷贝构造函数,析构函数全是private,可以只声明。C4需要有明确的Destory函数C5需要在线程安全。///Singleton.h#include<iostream>#include<string.h>#include<std
分类:
编程语言 时间:
2019-05-22 12:48:47
阅读次数:
156
前言 前面介绍的Queue都是通过Lock锁实现的阻塞队列,今天介绍一种非阻塞队列ConcurrentLinkedQueue,所谓非阻塞,其实就是通过CAS代替加锁来实现的高效的非阻塞队列。当许多线程共享对公共集合的访问时,ConcurrentLinkedQueue是一个合适的选择。与大多数其他并发 ...
分类:
编程语言 时间:
2019-05-21 21:09:44
阅读次数:
432
mysql 加锁方法;(大前提条件 :必须在事务中执行) 排它锁:(作用: 当对数据表添加排它锁时,各个事务之间对这个数据表的执行顺序就会形成一个队列 , 防止读到脏数据;) 1.显示加锁: sql语句 :select * from table where key = ... for update; ...
分类:
数据库 时间:
2019-05-20 19:00:37
阅读次数:
169
原文:MySQL 加锁和死锁解析 目录 产生死锁的必要条件 锁是加在那里的? 操作与加锁的对照关系 Insert Delete Update GAP锁 什么时候加next-key lock? Insert Intenti... ...
分类:
数据库 时间:
2019-05-20 01:24:05
阅读次数:
189
一、并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。 mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索 ...
分类:
数据库 时间:
2019-05-18 00:34:20
阅读次数:
166
在分布式开发中,锁是线程控制的重要途径。Java为此也提供了2种锁机制,synchronized和lock。做为Java爱好者,自然少不了对比一下这2种机制,也能从中学到些分布式开发需要注意的地方。 我们先从最简单的入手,逐步分析这2种的区别。 一、synchronized和lock的用法区别 sy ...
分类:
编程语言 时间:
2019-05-17 16:39:20
阅读次数:
129
以前接触到的数据库死锁,都是批量更新时加锁顺序不一致而导致的死锁,但是上周却遇到了一个很难理解的死锁。借着这个机会又重新学习了一下mysql的死锁知识以及常见的死锁场景。在多方调研以及和同事们的讨论下终于发现了这个死锁问题的成因,收获颇多。 ...
分类:
数据库 时间:
2019-05-17 15:22:18
阅读次数:
132
分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 1. 互斥性。在任意时刻,只有一个客户端能持有锁。 ...
分类:
其他好文 时间:
2019-05-16 21:41:59
阅读次数:
627