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简单进行测试