Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在spring中,我如何使它成为非线程安全的_Java_Multithreading_Spring_Singleton - Fatal编程技术网

Java 在spring中,我如何使它成为非线程安全的

Java 在spring中,我如何使它成为非线程安全的,java,multithreading,spring,singleton,Java,Multithreading,Spring,Singleton,我的服务bean示例 @Service("officeService") @Transactional public class OfficeService { @Resource(name = "sessionFactory") private SessionFactory sessionFactory; @Transactional(readOnly=true) public List<Office> getAllOffices(){

我的服务bean示例

@Service("officeService")
@Transactional
public class OfficeService {

    @Resource(name = "sessionFactory")
    private SessionFactory sessionFactory;

    @Transactional(readOnly=true)
    public List<Office> getAllOffices(){
      Session session = sessionFactory.getCurrentSession();
      Criteria crit = session.createCriteria(Office.class);
      crit.addOrder(Order.desc("name"));
      return crit.list();
    }
}
@Service(“officeService”)
@交易的
公共类办公服务{
@资源(name=“sessionFactory”)
私人会话工厂会话工厂;
@事务(只读=真)
公共列表getAllOffices(){
Session Session=sessionFactory.getCurrentSession();
Criteria crit=session.createCriteria(Office.class);
标准添加顺序(顺序描述(“名称”);
返回crit.list();
}
}
如果它不是线程安全的(或者它已经不是了),它会是什么样子


如果我所有的控制器和服务都是单例的,这是否意味着每个请求都会在需要时并发地作用于单例?

如果您将类中的任何状态作为实例变量进行管理,那么它就不是线程安全的。由于您拥有的唯一状态是sessionFactory,只要它的getCurrentSession()方法是线程安全的(它是线程安全的),那么您的方法也是线程安全的

如果您将类中的任何状态作为实例变量进行管理,那么它就不会是线程安全的。由于您拥有的唯一状态是sessionFactory,只要它的getCurrentSession()方法是线程安全的(实际上是),那么您的方法也是线程安全的