假設你有一個播放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但這隻適用於控制器是單身人士。如果它是按照每個請求創建的,那麼應該沒有問題。 –