1、简介
有一种多线程同步的机制cas(compare and swap),他是基于操作系统的cas指令进行判断。
原理步骤:
1、先取出临界资源的值
2、接着将此值作为期望值,和临界值的最新值对比,如果相同,说明没有其他线程修改,直接更新;如果不相同,则说明被其他线程修改过了,回到步骤1继续
jdk内部已经实现了部分数据结构的cas无锁算法。比如AtomicInteger、AtomicIntegerArray、AtomicLong、AtomicLongArray、AtomicDouble、AtomicDoubleArray、AtomicBoolean。
但是没有对list、set、tree、Grap的实现。
Amino就是这样一款基于cas(compare and swap)无锁算法的框架,高并发,高性能。
提供了
list(LockFreeList、LockFreeVector)、
set(LockFreeSet)、
tree(LockFreeBSTree)、
Grap(UndirectedGrap)
2、Amino如何引入
不提供maven依赖,所以需要把源码下载,然后自己编译,最后把jar放到私服上即可引用。 源码下载地址:https://sourceforge.net/projects/amino-cbbs/files/cbbs/ 编译放到maven私服,就不说了。百度一下
3、如何使用
直接new 对应的类即可实现
list(LockFreeList、LockFreeVector)
set(LockFreeSet)
tree(LockFreeBSTree)
Grap(UndirectedGrap)