专栏名称: java那些事
分享java开发中常用的技术,分享软件开发中各种新技术的应用方法。每天推送java技术相关或者互联网相关文章。关注“java那些事”,让自己做一个潮流的java技术人!《java程序员由笨鸟到菜鸟》系列文章火热更新中。
目录
相关文章推荐
芋道源码  ·  SQL性能优化神器! ·  昨天  
芋道源码  ·  Spring Boot 3.2 ... ·  昨天  
芋道源码  ·  解放大脑:ChatGPT + ... ·  昨天  
芋道源码  ·  SpringBoot ... ·  3 天前  
51好读  ›  专栏  ›  java那些事

Java中15种锁的介绍

java那些事  · 公众号  · Java  · 2019-01-30 16:00

正文

请到「今天看啥」查看全文


import java.util.concurrent.atomic.AtomicReference;

public class UnreentrantLock {

private AtomicReference owner = new AtomicReference ();
private int state = 0 ;

public void lock () {
Thread current = Thread.currentThread();
if (current == owner. get ()) {
state++;
return ;
}
//这句是很经典的“自旋”式语法,AtomicInteger中也有
for (;;) {
if (!owner.compareAndSet( null , current)) {
return ;
}
}
}

public void unlock () {
Thread current = Thread.currentThread();
if (current == owner. get ()) {
if (state != 0 ) {
state--;
} else {
owner.compareAndSet(current, null );
}
}
}
}



在执行每次操作之前,判断当前锁持有者是否是当前对象,采用state计数,不用每次去释放锁。


ReentrantLock中可重入锁实现


这里看非公平锁的锁获取方法:



final boolean nonfairTryAcquire






请到「今天看啥」查看全文