同步准则
当编写 synchronized 块时,有几个简单的准则可以遵循,这些准则在避免死锁和性能危险的风险
方面大有帮助:
使代码块保持简短。Synchronized 块应该简短— 在保证相关数据操作的完整性的同时,
尽量简短。把不随线程变化的预处理和后处理移出synchronized 块。 不要阻塞。不要在 synchronized 块或方法中调用可能引起阻塞的方 ,如
InputStream.read()。 在持有锁的时候,不要对其它对象调用方法。这听起来可能有些 端,但它消除了最常见的
死锁源头。 |
|