Effective Java书籍线程中的Builder模式是否安全?

Bi *_*Act 4 java

我正在阅读'有效的java' - 它建议在类有几个可选的构造参数时使用构建器模式.合理的是它有优势 -

'伸缩模式' - 它基本上为一个构造函数提供了需求模式,另一个带有必需的+ 1个可选项,另一个带有'required + 2 optional'等等 - 作者认为当可选参数变得难以读取和写入时失去控制

'Javabeans'模式 - 它使用一个无参数构造函数,然后为每个参数运行一个setter - 这里的缺点是线程安全 - 因为该对象经过了几个方法 - 并且可能在构造时可访问,导致远离的部分出现意外行为代码

推荐的模式 - 构建器 - 在类中使用带有可选参数的"静态"内部类成员 - 客户端在"java beans"样式构造中构建"构建器",然后调用基本上使用构建器成员进行设置的类构造函数它的领域

唷!

我的问题:鉴于构建器是静态成员,应用程序中的其他线程是否也无法同时访问并可能更改构建器属性?导致意外行为?

没有线程编程的经验所以请原谅我这是一个愚蠢的问题

Ami*_*ani 6

静态成员字段(在所述类的所有实例之间共享内存)和静态内部类(不查看或与外部类共享数据)之间存在差异.

有效的Java正在推广使用后一种方法的模式,它不会让您遇到任何线程安全问题.

如果由于某种原因,在程序中的两个线程上共享相同的Builder实例,那么是的,您遇到了线程安全问题.