解答
Lock 和 synchronized 有一点明显的区别 —— lock 必须在 finally 块中释放。否则,如果受保护的代码将抛出异常,锁就有可能永远得不到释放!这一点区别看起来可能没什么,但是实际上,它极为重要。忘记在 finally 块中释放锁,可能会在程序中留下一个定时炸弹,当有一天炸弹爆炸时,您要花费很大力气才有找到源头在哪。而使用同步,JVM 将确保锁会获得自动释放。
一个 Lock 对象和一个 synchronized 代码块之间的主要不同点是:
· synchronized 代码块不能够保证进入访问等待的线程的先后顺序。 你不能够传递任何参数给一个synchronized。
· 代码块的入口。因此,对于 synchronized 代码块的访问等待设置超时时间是不可能的事情。
· 块必须被完整地包含在单个方法里。而一个 Lock 对象可以把它的 lock() 和 unlock() 方法的调用放在不同的方法里。
帖子还没人回复快来抢沙发