控制器方法同步调用
Controller method called synchronously
采用 default starter app for java 并将以下内容添加到 HomeController
的 index
方法中:
System.out.println("Before");
Thread.sleep(5000);
System.out.println("After");
然后 运行 浏览器中的几个选项卡调用 http://localhost:9000
。
预期的行为是从浏览器选项卡发出请求后立即打印 Before
。
虽然实际结果是后续请求仅在 后 前一个请求完成后才开始执行。请注意,只有在控制器中调用相同方法时才会观察到这种情况:两种不同的方法同时成功 运行。
也许我弄错了,但是我尝试了application.conf
中几乎所有可能的配置,看起来线程池有足够的线程,但我仍然无法完成方法的同时执行不同的线程。
这很可能是由于您的浏览器拒绝同时向同一资源发出请求造成的,与 Play 无关。当我 运行 在我的机器上进行相同的测试时,我看到 Chrome 对索引页面发出两次请求的上限,而不管我打开了多少个选项卡,而当我 运行 curl从多个不同的控制台 windows,我看不到这样的限制。
您的浏览器确实不是用于运行这样的测试的正确工具。
采用 default starter app for java 并将以下内容添加到 HomeController
的 index
方法中:
System.out.println("Before");
Thread.sleep(5000);
System.out.println("After");
然后 运行 浏览器中的几个选项卡调用 http://localhost:9000
。
预期的行为是从浏览器选项卡发出请求后立即打印 Before
。
虽然实际结果是后续请求仅在 后 前一个请求完成后才开始执行。请注意,只有在控制器中调用相同方法时才会观察到这种情况:两种不同的方法同时成功 运行。
也许我弄错了,但是我尝试了application.conf
中几乎所有可能的配置,看起来线程池有足够的线程,但我仍然无法完成方法的同时执行不同的线程。
这很可能是由于您的浏览器拒绝同时向同一资源发出请求造成的,与 Play 无关。当我 运行 在我的机器上进行相同的测试时,我看到 Chrome 对索引页面发出两次请求的上限,而不管我打开了多少个选项卡,而当我 运行 curl从多个不同的控制台 windows,我看不到这样的限制。
您的浏览器确实不是用于运行这样的测试的正确工具。