楼主既然说了是用了spring ,那么这个类应该是单例多线程,所以执行这个方法时两个线程是没有半毛钱的关系的,只有在处理全局变量时才会有线程的安全问题。同理,spring会为每个线程绑定一个session所以两个线程的session也毫不相关

解决方案 »

  1.   

    取决于事务的隔离级别配置加上事务内是否对数据库进行update操作. 
    你这里就算该方法配置了最高的隔离级别也不会造作成阻塞, 因为你并没有update数据库, 事务方法本身并不具备同步功能, 同步发生在数据库层面.  
    举个例子:
    {
     update table a;
     sleep();
    }
    上面这段代码运行在高事务隔离级别内,sleep操作一定要在update 操作后面(数据库事务是在操作表的时候才打开的)
    如果有个线程f处于上述sleep阶段,那么:
    任何其它线程对于a表的update操作都将阻塞,而不只是该方法.  因为在sleep的时候, 数据库是锁住a表的. 锁要在线程f sleep之后提交了事务才会释放.
      

  2.   

    好像说错了,  如果是最高的事务隔离级别,  读的时候也会锁表, 不然怎么防止脏读不可重复读这些呢?  记不清楚了,大概这样

    谢谢你的回答,但是还有个疑问 
    如果有方法A
    {
     update table a;
    sleep();
    update table b
    }
    当我改完a 表进入sleep时,此时如果有另外一个线程也对 a 表进行操作,那么 另外一个线程此时会阻塞,一直等到 方法A执行完毕吗?
      

  3.   

    好像说错了,  如果是最高的事务隔离级别,  读的时候也会锁表, 不然怎么防止脏读不可重复读这些呢?  记不清楚了,大概这样

    谢谢你的回答,但是还有个疑问 
    如果有方法A
    {
     update table a;
    sleep();
    update table b
    }
    当我改完a 表进入sleep时,此时如果有另外一个线程也对 a 表进行操作,那么 另外一个线程此时会阻塞,一直等到 方法A执行完毕吗?

    这个是肯定的