使用Lock实现互斥(synchronized的一个替代)
传说有一本江湖罕见的武功秘籍,该书珍藏在主持大师手中。一天大师盛情邀请江湖好汉前来观摩该书,但是一次只能有一个人来看。
该怎么办呢?用synchronized来实现吗?都用臭了,算了。用下李狗(Doug Lea)写的Lock吧。
实现很简单,首先获得一个锁实例
Lock lock = new ReentrantLock();
接着获得一把锁:
lock.lock();
观摩该书中。。。
lock.unlock();
在lock()和unlock()之间就是传说中操作系统中的critical section(临界区域),一次只能有一个线程访能够访问到。
废话不多说,看一个简单的例子:
读者1欲观看该书!读者1开始阅读...读者2欲观看该书!读者3欲观看该书!读者4欲观看该书!读者5欲观看该书!读者6欲观看该书!读者7欲观看该书!读者8欲观看该书!读者9欲观看该书!读者10欲观看该书!想练此功,必先自宫。还是算了。。。 88 读者2开始阅读...想练此功,必先自宫。还是算了。。。 88 读者3开始阅读...想练此功,必先自宫。还是算了。。。 88 读者4开始阅读...想练此功,必先自宫。还是算了。。。 88 读者5开始阅读...想练此功,必先自宫。还是算了。。。 88 读者6开始阅读...想练此功,必先自宫。还是算了。。。 88