我正在阅读'有效的java' - 它建议在类有几个可选的构造参数时使用构建器模式.合理的是它有优势 -
'伸缩模式' - 它基本上为一个构造函数提供了需求模式,另一个带有必需的+ 1个可选项,另一个带有'required + 2 optional'等等 - 作者认为当可选参数变得难以读取和写入时失去控制
'Javabeans'模式 - 它使用一个无参数构造函数,然后为每个参数运行一个setter - 这里的缺点是线程安全 - 因为该对象经过了几个方法 - 并且可能在构造时可访问,导致远离的部分出现意外行为代码
推荐的模式 - 构建器 - 在类中使用带有可选参数的"静态"内部类成员 - 客户端在"java beans"样式构造中构建"构建器",然后调用基本上使用构建器成员进行设置的类构造函数它的领域
唷!
我的问题:鉴于构建器是静态成员,应用程序中的其他线程是否也无法同时访问并可能更改构建器属性?导致意外行为?
没有线程编程的经验所以请原谅我这是一个愚蠢的问题
静态成员字段(在所述类的所有实例之间共享内存)和静态内部类(不查看或与外部类共享数据)之间存在差异.
有效的Java正在推广使用后一种方法的模式,它不会让您遇到任何线程安全问题.
如果由于某种原因,在程序中的两个线程上共享相同的Builder实例,那么是的,您遇到了线程安全问题.
| 归档时间: |
|
| 查看次数: |
839 次 |
| 最近记录: |