@stter和@Getter的lombok注释可以是线程安全的吗?

时间:2014-09-07 05:43:05

标签: java multithreading lombok

我的类SessionCanal有问题,当我在Web服务中使用属性" idSession"当多个请求进入时,我想知道Setters和Getters是否可以是线程安全的(以某种方式同步它们)

@NoArgsConstructor
public class SesionCanal implements Serializable{
    private static final long serialVersionUID = 360569424947712753L;

    @Getter @Setter private String idSesion;
}

感谢您的帮助。

3 个答案:

答案 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。