http://blog.csdn.net/fw0124/article/details/6672522
别人理解如下:
如果我们把每个线程理解成 一个个门,门都需要上锁,
在没有ReentrantLock之前,我们上锁,可能统一用sycnchronized(钥匙),大家都在竞争锁钥匙,钥匙只有一把,谁先拥有谁就先开门进去,门打不开的就一直卡死等待,浪费时间,还不能干其他事情,就消耗在这里了
有了ReEntrantLock,英文解释可重用锁, 就不需要钥匙了,我们可以灵活的为一组门(thread)配置一把特殊的锁,为另一组门配置另外一把锁,多灵活啊,这把锁仍然拥有synchronized的功能,
1 如果用tryLock(非阻塞),此次获取不到锁,那你也不会等待,可以在门口玩会手机,或者去超时买菜,一会再来trylock一次 这个方法更灵活
2如果用lock(阻塞),那就跟synchronized一样的,获取了锁,就开门了,同一时刻 其他的门就死等,不能干其他事情
另外提醒:trylock lock成功了 都要释放锁各一次,否则就死锁了哦