提示,以防止java中的死锁
我正在研究Java线程和死锁,我理解死锁的例子,但我想知道是否有一些通用规则可以用来防止它。
我的问题是,如果有规则或技巧可以应用于java中的源代码来防止死锁? 如果是的话,你能解释一下如何实现它吗?
一些快速提示我的头脑
封装,封装,封装! 可能你用锁具犯的最危险的错误就是将你的锁具暴露给世界(使之公开)。 如果你这样做,没有任何事情会发生,因为任何人都可以在没有对象知道的情况下获得锁(这也是为什么你不应该锁定this
)。 如果你保持你的锁私人,那么你有完全的控制,这使得它更易于管理。
ConcurrentLinkedQueue
而不是同步的ArrayList
)