在 java 中防止死锁的提示

2022-08-31 20:51:52

我正在研究java线程和死锁,我理解死锁的例子,但我想知道是否有一般规则可以防止它。

我的问题是,是否有规则或提示可以应用于java中的源代码以防止死锁?如果是,您能解释一下如何实现它吗?


答案 1

我脑海中的一些快速提示

  • 不要使用多个线程(例如,通过强制要求一切都在EDT中完成)那样
  • 不要一次握住几把锁。如果这样做,请始终以相同的顺序获取锁
  • 在持锁时不执行外来代码
  • 使用可中断锁

答案 2

封装,封装,封装!使用锁可能最危险的错误是将锁暴露给世界(将其公开)。不知道如果您这样做会发生什么,因为任何人都可以在对象不知道的情况下获得锁定(这也是您不应该锁定的原因)。如果您将锁保密,那么您可以完全控制,这使其更易于管理。this