不可变对象
final关键字:类,方法,变量
修饰类:不能被继承
修饰方法:1.锁定方法不能被继承类修改。2.效率
修饰变量:基本数据类型变量,引用类型变量
修饰基本类型变量,赋值之后不能被修改,包括String。
修饰对象后,不能修改对象的引用,但是能修改对象的属性。
Java提供Collections.unmodifiableXXX:Collection,set,map.list...
Guava提供 ImmutableXXX:Collection,set,map.list...
安全共享对象的安全策略
线程限制:一个被线程限制的对象,有线程独占,并且只能被占有它的线程修改
共享只读:一个共享只读的对象,在没有额外同步的情况下,可以被多个线程并发访问,但是任何线程都不能修改它。
线程安全对象:一个线程安全的对象或者容器,在内部通过同步机制来保证线程安全,所以其他线程无需额外的同步就可以通过接口随意访问它。
被守护对象:被守护对象只能通过获取特定的锁来访问。
实现:不可变对象,线程封闭,同步容器,并发容器