满足同步需求的另一种方法是使用不可变对象

需要注意:不可变对象和不可变的对象引用的区别


在并发程序中使用和共享对象时,可以使用一些实用的策略,包括:

线程封闭:线程封闭的对象只能由一个线程拥有,对象被封闭在该线程中,并且只能由这个线程修改。

只读共享:在没有额外同步的情况下,共享的只读对象可以由多个线程并发访问,任何线程都不能修改它。共享的只读对象包括不可变对象和事实不可变对象。

不可变对象:技术上不可改变的对象。

事实不可变对象:如果对象从技术上来看是可变的,但其状态在发布后不会再改变,那么把这种对象称为事实不可变对象。

线程安全共享:线程安全的对象是在其内部实现同步,因此多个线程可以通过对象的公有接口来进行访问而不需要进一步的同步。

保护对象:被保护的对象只能通过持有特定的锁来访问。保护对象包括封装在其他线程安全对象中的对象,以及已发布的并且由某个特定锁保护的对象