Lock lock = new ReentrantLock();
1,Lock是一个接口,只能通过它的具体实现,来创建锁对象。
Condition notFull = lock.newCondition();
2,有了锁之后,还要有钥匙,才能实现开锁和上锁的功能,Condition就相当于这把锁的钥匙。
3,Lock替代的是synchronized,是一种显式的调用方式,需要在finally中显式的释放。
4,Condition中的await和signal、signalAll方法,替代了Object中的wait和notify、notifyAll方法。
Object的特点是,一把锁只有一把钥匙;Condition的特点是,一把锁可以有多把钥匙。
虽然condition可以有多个钥匙,但是开锁和上锁的钥匙,必须是同一把。 |