不可变对象需要满足的条件:
1、对象创建以后其状态就不能修改
2、对象所有域都是final类型
3、对象是正确创建的(在对象创建期间,this引用没有逸出)
final关键字:类、方法、变量
修饰类:不能被继承
修饰方法:1、锁定方法不被继承类修改;2、效率
修饰变量:基本数据类型变量、引用数据类型变量
线程封闭
Ad-hoc线程封闭:程序控制实现,最糟糕,忽略
堆栈封闭:局部变量,无并发问题
ThreadLoacl线程封闭:特别好的封闭方法
安全共享对象策略
线程限制:一个被线程限制的对象,由线程独占,并且只能被占有它的线程修改
共享只读:一个共享只读的对象,在没有额外同步的情况下,可以被多个线程并发访问,但是任何线程都不能修改它
线程安全对象:一个线程安全的对象或者容器,在内部通过同步机制来保证线程安全,所以其它线程无需额外的同步就可以通过公共接口随意访问它
被守护对象:被守护对象只能通过获取特定的锁来访问