Joshua Bloch使用的“失败原子性”是什么?它对不可变对象有何好处?
发布日期:2021-06-30 12:28:25 浏览次数:3 分类:技术文章

本文共 449 字,大约阅读时间需要 1 分钟。

Bloch的“失败原子性”意味着,如果方法抛出异常,则该对象之后仍应可用。通常,对象应与调用该方法之前处于相同状态。

对于不可变对象,可以简单地从它是不可变的事实中获得收益。没有可以更改对象状态的操作。对象的所有方法都可以创建从原始对象派生的新对象。

例如,String具有substring(int)方法。它不会更改原始字符串中的任何内容-它会创建一个新对象,其内容是所需原始字符串部分的副本。如果抛出异常,那么您将不会获得新对象-但原始String从未更改。 substring()中没有修改原始String的代码,因此它是故障原子的。

可变对象也可以获取失败原子性,但是必须特别注意它,而在不可变对象中,它仅源于您将其设计为不可变的注意。

参考

  • https://stackoverflow.com/questions/29842845/what-is-failure-atomicity-used-by-j-bloch-and-how-its-beneficial-in-terms-of-i

转载地址:https://javaedge.blog.csdn.net/article/details/109215155 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:lombok的@Builder注解原理背后干了啥?
下一篇:图文+代码带你攻克OAuth 2.0三大核心授权类型

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月24日 00时15分46秒