我目前正在学习 java 中的线程,从我所读到的内容来看,实现它们并不是问题,而是让你的代码线程安全。这让我想到了我的问题:我是否应该尽可能使用不可变对象来确保防止并发错误?
我读过关于何时使用可变对象的不同意见,包括:
如果不可变对象是好的,为什么人们还要继续创建可变对象?(程序员.SE)
对于大型和/或复杂对象,为每次更改创建对象的新副本可能非常昂贵和/或乏味。对于具有不同身份的对象,更改现有对象比创建新的修改副本要简单和直观得多。
不可变对象(Java 教程)
对象创建的影响通常被高估,并且可以被与不可变对象相关的一些效率所抵消。这些包括由于垃圾收集而减少的开销,以及消除保护可变对象免受损坏所需的代码。
那么,在实现线程时是否有最佳实践?我是否应该尽可能尝试使用不可变对象?