public interface Lock {/*** 获取锁的方法* 如果当前锁不可被获取,则线程会进入阻塞状态,直到获取* 这里应该考虑加锁等待锁过程中可能的错误情况*/void lock();/*** 同样是获取锁的方法,但这个等待过程可以被打断* 如果当前线程被打断应该抛出一个InterruptedException*/void lockInterruptibly() throws InterruptedException;/*** 尝试获取锁,获取失败也立即返回不等待*/boolean tryLock();/*** 尝试获取锁,如果直到超过给定时间都没有获取到则返回* 如果获取过程中被中断则抛异常*/boolean tryLock(long time, TimeUnit unit) throws InterruptedException;/*** 释放锁的方法 只有持有者可以释放,其他人释放可以抛出异常*/void unlock();/*** 返回一个条件变量,对条件变量的等待/唤醒操作来操作指定线程*/Condition newCondition();}
Lock接口是定义了一些实现自定义锁的方法,后续我们自定义锁需要实现该接口中的方法。
