CopyOnWriteArrayList主要可以解决的问题是并发遍历读取无锁(通过Iterator) 对比CopyOnWriteArrayList和ArrayList 假如我们频繁的读取一个可能会变化的清单(数组),你会怎么做? 一个全局的ArrayList(数组),修改时加锁,读取时加锁 读取时为 ...
分类:
其他好文 时间:
2019-05-27 16:26:03
阅读次数:
101
何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。 悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数 ...
分类:
其他好文 时间:
2019-05-19 23:19:11
阅读次数:
155
关于CAS等原子操作 在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Compare & Set或是 Compare & Swap,现在几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是 CMPXCHG 汇编指令。有了这个原子操作,我们就可以用其来实现各种无锁(lock ...
分类:
其他好文 时间:
2019-05-19 11:39:49
阅读次数:
187
1、 HashMap 加入了红黑树 2、ConcurrentHashMap 使用了CAS无锁机制 3、 永久区没有了,成了元空间(MetaSpace)。相对于方法区,直接使用的物理内存!相应的PremGenSiz 、 MaxPremGenSize 参数失效了 取而代之的是:MetaSpaceSize ...
分类:
编程语言 时间:
2019-05-13 01:15:51
阅读次数:
127
java并发包中提供了三个常用的并发队列实现,分别是:ConcurrentLinkedQueue、LinkedBlockingQueue和ArrayBlockingQueue。 ConcurrentLinkedQueue使用的是CAS原语无锁队列实现,是一个异步队列,入队速度很快,出队进行了加锁,性 ...
分类:
编程语言 时间:
2019-05-01 18:45:13
阅读次数:
155
1、线程与进程: 在开始之前先把进程与线程进行区分一下,一个程序最少需要一个进程,而一个进程最少需要一个线程。 线程是程序执行流的最小单位,而进程是系统进行资源分配和调度的一个独立单位。 2、Thread的几个重要方法: 我们先了解一下Thread的几个重要方法。 a、start()方法,开始执行该 ...
分类:
其他好文 时间:
2019-04-28 12:33:14
阅读次数:
130
SQLite 与线程 SQLite 是线程安全的。 线程模型 SQLite 支持如下三种线程模型 单线程模型 这种模型下,所有互斥锁都被禁用,同一时间只能由一个线程访问。 多线程模型 这种模型下,一个连接在同一时间内只有一个线程使用就是安全的。 串行模型 开启所有锁,可以随意访问。 设置线程模型 S ...
分类:
数据库 时间:
2019-04-10 13:34:53
阅读次数:
227
https://blog.csdn.net/yishizuofei/article/details/78353722 https://blog.csdn.net/yishizuofei/article/details/78353722 https://blog.csdn.net/yishizuofe ...
分类:
其他好文 时间:
2019-04-08 17:26:09
阅读次数:
183
最近在看 java.util.concurrent.atomic 包下的AtomicInteger源码发现它是利用CAS来实现原子操作、Volatile保证元素的可见性来实现无锁下的线程安全。 决定深入了解一下CASMySql中的MVCC(多并发版本控制)中的乐观锁也是通过CAS机制和版本号实现无锁 ...
分类:
其他好文 时间:
2019-04-04 12:53:55
阅读次数:
177
具体CAS操作 上一篇讲述了CAS机制,这篇讲解CAS具体操作. 什么是悲观锁、乐观锁?在java语言里,总有一些名词看语义跟本不明白是啥玩意儿,也就总有部分面试官拿着这样的词来忽悠面试者,以此来找优越感,其实理解清楚了,这些词也就唬不住人了。 synchronized是悲观锁,这种线程一旦得到锁, ...
分类:
编程语言 时间:
2019-03-27 12:35:09
阅读次数:
412