【漫画】JAVA并发编程 J.U.C Lock包之ReentrantLock互斥锁
原创声明:本文来源于公众号【胖滚猪学编程】 转载请注明出处 在 JAVA并发编程 如何解决原子性问题 的最后,我们卖了个关子,互斥锁不仅仅只有synchronized关键字,还可以用J.U.C中的Locks的包来实现,并且它非常强大!今天就来一探究竟吧! ReentrantLock 顾名思义,ReentrantLock叫做可重入锁,所谓可重入锁,顾名思义,指的是线程可以重复获取同一把锁。 ReentrantLock也是互斥锁,因此也可以保证原子性。 先写一个简单的demo上手吧,就拿原子性问题中两个线程分别做累加的demo为例,现在使用ReentrantLock来改写: private void add10K() { // 获取锁 reentrantLock.lock(); try { int idx = 0; while (idx++ < 10000) { count++; } } finally { // 保证锁能释放 reentrantLock.unlock(); } } ReentrantLock在这里可以达到和synchronized一样的效果,为了方便你回忆,我再次把synchronized实现互斥的代码贴上来: private synchronized void add10K(){ int start = 0; while (start ++ < 10000){