gpt4 book ai didi

java - 使用这种方法会遇到线程安全问题吗?

转载 作者:行者123 更新时间:2023-12-01 17:33:22 24 4
gpt4 key购买 nike

我正在使用 EJB/JPA,并且创建了一个名为 createDataset 的静态方法,该方法将查找 Dataset 对象。每次我必须插入、更新、删除等实体时,我都会调用 DatasetFactory.createDataset() 检索 DatasetObject,然后调用适当的方法(插入、更新等)。

代码:

public class DatasetFactory {
public static Dataset createDataset() {
try {
return (Dataset) new InitialContext().lookup("java:global/.../Dataset");
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
}

public interface Dataset<T> {
void insert(T entity);
//...
}

@Stateless
@EJB(name = "java:global/.../Dataset", beanInterface = Dataset.class)
public class DatasetBean<T> implements Dataset<T> {

@PersistenceContext(type = PersistenceContextType.TRANSACTION)
private EntityManager entityManager;

@Override
public void insert(T entity) {
entityManager.persist(entity);
}
//...
}

使用这种方法可能会遇到线程安全问题吗?如果是这样,我应该做哪些修改?我应该将同步修饰符放在 DatasetFactory.createDataset() 中吗?

非常感谢!

最佳答案

您不必同步 EJB 的任何方法,因为 EJB 规范指定 EJB 实例不得由两个并发线程调用。 EJB 容器为您处理同步和线程安全。这是使用 EJB 的要点之一。

关于java - 使用这种方法会遇到线程安全问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8772701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com