控制器方法同步调用

时间:2017-09-28 10:56:32

标签: playframework playframework-2.0

选择default starter app for java并将以下内容添加到HomeController的{​​{1}}方法中:

index

然后在浏览器中运行几个标签System.out.println("Before"); Thread.sleep(5000); System.out.println("After");

预期的行为是,一旦从浏览器选项卡发出请求,就会打印http://localhost:9000。 虽然实际结果是后续请求仅在之后开始执行,但前一个请求已完成。请注意,仅在控制器中调用相同方法时才会观察到这种情况:两种不同的方法同时成功运行。

也许我出错了,但我在Before中尝试了几乎所有可能的配置,看起来线程池有足够的线程,但我还是无法完成同时执行不同线程中的方法。

1 个答案:

答案 0 :(得分:2)

这很可能是因为您的浏览器拒绝同时向同一资源发出请求,而与Play无关。当我在我的机器上运行相同的测试时,无论我打开了多少个选项卡,我都看到Chrome对索引页面的两个请求设置了上限,而当我从多个不同的控制台窗口运行curl时,我看不到这样的限制。

您的浏览器真的不适合用来运行这样的测试。