Lock类也可以实现线程同步,而Lock获得锁需要执行lock方法,释放锁需要执行unLock方法
Lock类可以创建Condition对象,Condition对象用来使线程等待和唤醒线程,需要注意的是Condition对象的唤醒的是用同一个Condition执行await方法的线程,所以也就可以实现唤醒指定类的线程
Lock类分公平锁和不公平锁,公平锁是按照加锁顺序来的,非公平锁是不按顺序的,也就是说先执行lock方法的锁不一定先获得锁 Lock类有读锁和写锁,读读共享,写写互斥,读写互斥
importjava.sql.Date;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.concurrent.TimeUnit;importjava.util.concurrent.locks.Condition;importjava.util.concurrent.locks.ReentrantLock;/*** ReEntrantLockTest*/
public classReEntrantLockTest {private static final int THREAD_COUNT = 4;private static final int WAIT_TIMES = 5;public static voidmain(String[] args) {//默认是非公平锁
final ReentrantLock lock = newReentrantLock();final Condition con =lock.newCondition();final Runnable add = newRunnable() {
@Overridepublic