Java并发编程 -- AQS入门&实现可重入锁
Java并发编程 -- AQS可能会看的一脸懵逼,今天实战一个项目练手AQS MyAQSLock.java /** * Created by Fant.J. */ public class MyAQSLock implements Lock { private Helper helper = new Helper(); private class Helper extends AbstractQueuedSynchronizer { @Override protected boolean tryAcquire(int arg) { // 如果第一个线程进来,可以拿到锁,因此我们可以返回true // 如果第二个线程进来,则拿不到锁,返回false。有种特例,如果当前进来的线程和当前保存的线程是同一个线程,则可以拿到锁,但是有代价,要更新状态值 // 如何判断是第一个线程进来还是其他线程进来? //获取状态值 int state = getState(); Thread t = Thread.currentThread(); //如果状态=0,那就是第一个线程 if (state == ...