lombok的@Setter和@Getter注释可以安全吗?

Hir*_*dez 6 java multithreading lombok

我的类SessionCanal遇到问题,当我在Web服务中使用多个输入请求时更改了属性“ idSession”时,我想知道Setter和Getter是否可以是线程安全的(以某种方式进行同步)

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

    @Getter @Setter private String idSesion;
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助。

小智 11

您可以使用:

@Getter(onMethod_={@Synchronized}) @Setter(onMethod_={@Synchronized}) 
private String idSesion;
Run Code Online (Sandbox Code Playgroud)

与 Lombok @Synchronized


pau*_*sm4 3

简短回答:不。

默认情况下,Servlet 不是线程安全的,并且 getter/setter 方法(通过注释自动生成,或手动编码)也不是线程安全的。如果您需要读/写访问,并且还需要线程安全,那么您需要同步访问。

请参阅Oracle 文档中的处理线程问题。

就我个人而言,我更喜欢手动编写 getter 和 setter 方法。部分是针对这样的情况。