liujianche11
2011-06-11 22:03
浏览 260
已采纳

hibernate的sessionFactory问题

hibernate的sessionFactory如果用单例得到的话是对同一个线程单例,在servlet中sessionFactory是放在哪里的?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • licg1234 2011-06-15 20:25
    已采纳

    [code="java"]public class TestSingle {
    public static void main(String args[]){
    new Thread(){
    public void run(){
    for(int i=0;i System.out.println("1-->"+SingleClass.getInstance());
    try{
    Thread.sleep(50);
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    }
    }.start();

        new Thread(){
            public void run(){
                for(int i=0;i<10;i++){
                  System.out.println("2-->"+SingleClass.getInstance());
                   try{
                      Thread.sleep(50);
                  }catch(Exception e){
                      e.printStackTrace();
                  }
                }
            }
        }.start();
    }
    

    }

    class SingleClass{
    private static final SingleClass singleClass=new SingleClass();

    public static SingleClass getInstance(){
        return singleClass;
    }
    

    }[/code]

    结果是:
    2-->com.infoexplorer.SingleClass@10b30a7
    1-->com.infoexplorer.SingleClass@10b30a7
    1-->com.infoexplorer.SingleClass@10b30a7
    2-->com.infoexplorer.SingleClass@10b30a7
    1-->com.infoexplorer.SingleClass@10b30a7
    2-->com.infoexplorer.SingleClass@10b30a7
    2-->com.infoexplorer.SingleClass@10b30a7
    1-->com.infoexplorer.SingleClass@10b30a7
    2-->com.infoexplorer.SingleClass@10b30a7
    1-->com.infoexplorer.SingleClass@10b30a7
    2-->com.infoexplorer.SingleClass@10b30a7
    1-->com.infoexplorer.SingleClass@10b30a7
    1-->com.infoexplorer.SingleClass@10b30a7
    2-->com.infoexplorer.SingleClass@10b30a7
    1-->com.infoexplorer.SingleClass@10b30a7
    2-->com.infoexplorer.SingleClass@10b30a7
    1-->com.infoexplorer.SingleClass@10b30a7
    2-->com.infoexplorer.SingleClass@10b30a7
    1-->com.infoexplorer.SingleClass@10b30a7
    2-->com.infoexplorer.SingleClass@10b30a7
    证明确实两个线程调用的同一个SingleClass对象

    点赞 评论
  • licg1234 2011-06-12 20:43

    楼主思想就错了,单例 默认就是当前jvm范围内单例,而无论有多少个线程,都是在同一个jvm下。所以sessionFactory用单例模式就可以了。
    正因为单例模式不是每个线程对应一个对象,所有线程公用一个对象,所以才出现同步问题

    点赞 评论

相关推荐 更多相似问题