WEB 应用中的同步问题

架构Spring MVC +Hibernate,
现在想实现一个方法同步,这样写的 public synchronized String getTask(){...}
这样应该是一个线程进入后,另一个线程才能进入,可是是结果并非如此。我又换成 synchronized(this){...}把需要同步的代码入到其中,可是还是不同步。怎么样做才能同步呢? Spring MVC 是Singleton的。bean 受IOC管理;
请教问题其中原因,按常理是应该同步的?

2个回答

你的同步方法是Service里的吧?我估计是因为事务配置的原因,使用
[code="java"]@Transactional(propagation = Propagation.REQUIRED) [/code]
的话,spring后面会使用AOP的方式动态子类化你的Service,实际上你是的同步锁this都指向不同对象,你把上面的事务配置去掉,在测试一下看看。

Spring MVC中Cotroller是要求实现为线程安全,可重用的,因此,Controller在配置过程中是singleton的,但这里的singleton不是整个JVM的,而是同一上下文的。
把你的Controller及同步代码贴上来看看。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问