一直想写线程锁相关的东西,然后自己之前也是有些模糊,自从开了一篇文章,感觉茅塞顿开 引文
http://www.cnblogs.com/dolphin0520/p/3923167.html
在这里概括一下,防止自己忘却:
1 :synchronized 是内置的,而lock是util的并发包中的
2 :前者一旦使用,只有两种可能会释放锁。 一: 发生异常,由jvm自动释放
二 :执行完毕,正常释放
后者使用后要想释放锁,只能调用unlock方法
后者有唯一实现类 ReentrantLock 可重入锁,相当于读写分离,可以将完善锁机制的效率问题。在lock的情况下,任何一个线程调用了写锁,才会使其他线程进行等待,若是多个线程进行的都是读操作,那么,可以异步进行,不需要同步,提升效率
原文:https://www.cnblogs.com/senjiang/p/10597542.html