加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为什么使用volatile成员生成JPA2 MetaModel?

发布时间:2020-12-14 06:06:23 所属栏目:Java 来源:网络整理
导读:我刚刚使用org.apache.openjpa.persistence.meta.AnnotationProcessor6为我的JPA2实体生成MetaModel. @javax.annotation.Generated(value="org.apache.openjpa.persistence.meta.AnnotationProcessor6",date="Tue Nov 22 09:49:03 CET 2011")public class En
我刚刚使用org.apache.openjpa.persistence.meta.AnnotationProcessor6为我的JPA2实体生成MetaModel.
@javax.annotation.Generated
(value="org.apache.openjpa.persistence.meta.AnnotationProcessor6",date="Tue Nov 22 09:49:03 CET 2011")
public class Entity_ {
    public static volatile SingularAttribute<Entity,Entity> id;
    public static volatile SingularAttribute<Entity,String> value;
    public static volatile SingularAttribute<Entity,String> order;
}

有人可以解释为什么在这种情况下属性被标记为volatile吗?

谢谢.

解决方法

设置静态变量的线程可能与用于访问它们的线程不同,因此需要使用volatile修饰符来同步所有线程之间的内存.

没有volatile的场景是这样的:

>您的线程在初始化JPA提供程序之前访问变量,并为静态字段获取null> JPA提供程序从不同的线程初始化,并将静态字段设置为非空值>您的线程再次访问静态字段.在这种情况下,线程的缓存内存将不会看到更改,并继续为所有静态字段返回null.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读