我的类SessionCanal有问题,当我在Web服务中使用属性" idSession"当多个请求进入时,我想知道Setters和Getters是否可以是线程安全的(以某种方式同步它们)
@NoArgsConstructor
public class SesionCanal implements Serializable{
private static final long serialVersionUID = 360569424947712753L;
@Getter @Setter private String idSesion;
}
感谢您的帮助。
答案 0 :(得分:3)
您可以使用:
@Getter(onMethod_={@Synchronized}) @Setter(onMethod_={@Synchronized})
private String idSesion;
使用Lombok @Synchronized
答案 1 :(得分:2)
简短回答:不。
默认情况下,servlet不是线程安全的,getter / setter方法(通过注释自动生成或手动编码)不是线程安全的。如果您需要读/写访问权限,并且还需要线程安全性,则需要同步访问权限。
查看Oracle文档中的Handling threading issues。
就个人而言,我更喜欢手动编写getter和setter方法。在某种程度上,对于这样的情况。
答案 2 :(得分:0)
以AtomicReference
返回;只要一个领域在变化,它就会完成工作。您必须编写自己的getter和setter。