假设你有一个播放Web应用程序下面的代码:并发播放斯卡拉
class MyClass extends Controller {
def myMethod = Action {
var a = 0
while (a < 1000) {
println("Value of a: " + a);
a = a + 1;
}
}
}
我能有一个竞争条件,如果两个用户/浏览器调用相同的方法?如果是,如何避免它?
在这种情况下,变量'a'是执行'Action'的'Future'的线程的本地,所以答案是** no **。如果'a'被声明为控制器的*字段,那么当然会有竞争状态。另一种引入问题的方式是制作更多'未来'/'线程'/'演员'参与改变'a'。 –
@ insan-e但这只适用于控制器是单身人士。如果它是按照每个请求创建的,那么应该没有问题。 –