六、可重入锁(递归锁) 应用 synchronized、Reentrantlock、Lock 思想: 任意线程在获取到锁之后能够再次获取该锁而不会被锁所阻塞 实现 通过组合自定义同步器来实现锁的获取与释放 获取锁:识别获取锁的线程是否为当前占据锁的线程 ,如果是,则再次成功获,。获取锁后,进行计数自增 释放锁:释放锁时,进行计数自减 优点...
1.1.1 公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。 1.1.2 非公平锁 非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。 对于JavaReentrantLock而言,通过构造函数指定该锁是否是公平锁,默认是非公平锁。非公平锁...
自旋锁 自旋锁(spinlock):是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少上下文切换的消耗,缺点就是循环会消耗CPU /** * 实现一个自旋锁 * 通过CAS操作完成自旋锁,A线程先来调用myLock方法自己持有锁5秒钟,B随后进来发现当前有线程持有锁,不是null, * 所以...