java.util.concurrent.locks下的锁其实都是基于AQS(AbstractQueuedSynchronizer)实现的。
尝试着自己写一下:
1.implements Lock,
2.然后自己写一个同步器sync继承AbstractQueuedSynchronizer
(一般建议同步器写成一个内部类)
- 实现tryAcquire(int);
- 实现tryRelease(int);
- 实现isHeldExclusively();
3.利用sync实现Lock接口的lock(),unlock()方法。
class MyLock implements Lock{
MySync sync=new MySync();
@Override
public void lock() {
sync.acquire(1);
}
@Override
public void lockInterruptibly() throws InterruptedException {
}
@Override
public boolean tryLock() {
return false;
}
@Override
public boolean tryLock(long time, TimeUnit unit) throws InterruptedException {
return false;
}
@Override
public void unlock