Java知识进阶-程序员必须锻炼本身,手写自旋锁-知识铺

1、自旋原理markdown

简单讲:线程尝试获取锁的过程不会阻塞,而是采用循环的方式不断获取锁。ide

优势:减小内核态和用户态切换的消耗测试

缺点:不停自旋消耗CPU线程

2、动手实现简单自旋锁对象

2.1利用AtomicReference实现 www.121mu.com/gszlyfxgl/源码

AtomicReference原子性,底层实现CAS操做,能够对比普通对象的引用。it

源码简析:class

从源码中能够看出,AtomicReference这原子操做底层使用的是unsafe.compareAndSwapObject来完成,也就支持普通对象的CAS操做。原理

AtomicInteger这个也是原子操做,底层进行CAS比较的是整数,没有AtomicReference这个更实用。循环

2.2手写简单自旋锁源码

2.3简单进行测试

相关文章
相关标签/搜索