了解 Java 中的锁用法
Understanding locks usage in Java
我试图了解 Java 中同步和锁定之间的区别,但我发现了另一个我仍然不完全理解的问题:
What is the equivalent of synchronized( object ) in Reentrant lock in Java?
特别是我不明白为什么 lock.lock() 写在 try 块之外。
根据我的理解,锁在方法体内使用,lock.lock() 被写为 try 块中的第一件事,以确保一次只有一个线程可以执行 try 中的内容块,直到使用 lock.unlock() 调用解锁锁,该调用写在 try 块之后的 finally 块中。
但是如果 lock.lock() 在方法体之外和块之外被调用,这意味着什么?
try-finally 结构保证释放锁。
'lock' 写在 'try' 之前的原因是,在锁定完成之前,没有任何东西可以解锁 - 所以有一个 finally 子句无条件解锁一些可能不会解锁的东西是一个错误已被锁定
我试图了解 Java 中同步和锁定之间的区别,但我发现了另一个我仍然不完全理解的问题: What is the equivalent of synchronized( object ) in Reentrant lock in Java?
特别是我不明白为什么 lock.lock() 写在 try 块之外。
根据我的理解,锁在方法体内使用,lock.lock() 被写为 try 块中的第一件事,以确保一次只有一个线程可以执行 try 中的内容块,直到使用 lock.unlock() 调用解锁锁,该调用写在 try 块之后的 finally 块中。
但是如果 lock.lock() 在方法体之外和块之外被调用,这意味着什么?
try-finally 结构保证释放锁。
'lock' 写在 'try' 之前的原因是,在锁定完成之前,没有任何东西可以解锁 - 所以有一个 finally 子句无条件解锁一些可能不会解锁的东西是一个错误已被锁定