gpt4 book ai didi

java - 在 Java 中处理同步块(synchronized block)/方法中的异常的最佳实践

转载 作者:行者123 更新时间:2023-11-30 09:06:28 24 4
gpt4 key购买 nike

<分区>

我读到我们在编写同步块(synchronized block)或方法时必须小心,因为如果线程由于异常退出同步方法/ block ,同步锁将被释放,因为内存模型不会关心是否有一个线程因异常退出。因此即使对象可能处于损坏状态,同步锁也可供其他线程获取。

因此,如果我们考虑最佳实践,是否有我们可以遵循的编写同步方法/ block 的指南。我个人认为锁非常好,因为它们具有 try {} finally {} 语义,但如果我们有一个 API 绝对需要同步方法/ block ,那么编写这些同步方法/ block 的好方法是什么。我认为对同步方法也使用 try finally 方法可能会很好,但是 StringBuffer 类不使用该方法。我不确定是否有任何具有同步方法的标准类使用该方法。那么应该将日志记录部分留给 uncaughtExceptionHandler 是出路吗?

还有其他可以派上用场的好做法吗?如果一个对象的状态被破坏,有没有办法阻止其他线程获取同步锁。 UncaughtExceptionHandlers 和 finally block 最多可以执行额外的日志记录。这样对吗?它们不能真正阻止其他线程随后获取同步锁。这样对吗?那么我们应该如何在 Java 中编写同步方法/ block 呢?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com