Spring控制器中的并发方法条目

时间:2016-02-09 17:13:23

标签: spring spring-mvc spring-boot

在最简单的Spring(Boot)应用程序中,我观察到控制器的以下行为,比如说

UPDATE table1
SET HH_NUM = (SELECT MAX(p.ROW_NUM) FROM table1 p WHERE p.REL = 0 and p.row_num < h.row_num  )
FROM table1 h
WHERE h.HH_NUM = 0

即:不允许并发进入@CrossOrigin @RestController public class MyController { //... @RequestMapping(value = {"/lazy-dog"}) @ResponseBody public Rest lazyDog() { //... Thread.sleep(10000); // return Message("Dog exiting") } @RequestMapping(value = {"/quick-fox"}) @ResponseBody public Rest quickFox() { //... return Message("Fox exiting") } } (从两个浏览器标签中调用两次持续lazyDog()),同时允许同时执行20seclazyDog()(当狗等待时,狐狸可以快速执行,例如在单独的浏览器选项卡中)。

应该做些什么才能同时执行两次或多次quickFox()的调用?

注意:我目前正在通过以下方式启动该应用:

lazyDog()

1 个答案:

答案 0 :(得分:4)

我相信您必须通过在单个浏览器(或单个浏览器供应商)中打开两个选项卡进行测试。您是否可以尝试同时访问不同的两个浏览器供应商(例如Chrome&amp; IE或Chrome&amp; Firefox等)中的网址。

我怀疑它很可能是浏览器特定的同时发送到同一主机/网址的HTTP请求的实现。