0

Grails(1.3.6)コントローラアクションとクラス変数スレッドセーフで宣言されている変数はありますか?すなわちGrails(1.3.6)のコントローラアクションとクラス変数で宣言された変数はスレッドセーフですか?

class TestController { 
     String y //Is y thread-safe? 
    def testAction = { 
     String x //Is x thread-safe? 
    } 

} 
+0

コントローラの要求スコープ(要求ごとに新しいy)。 xはローカル変数です。 – cfrick

+0

Grails 1.3.6では、問題ありません。しかし、Grails 1.4.xではGrailsアプリケーションのデフォルトの設定でコントローラのスコープが "シングルトン"または "アプリケーション"に変更され、 "y"変数がスレッドを危険にさらします。とにかく、これを行うべきではありません。コントローラまたはサービスに直接状態を追加しないでください。 – billjamesdev

答えて

0

cfrickが応答したようなので、それらのすべてがスレッドセーフである、コントローラがリクエストスコープされ、すべての変数は、各呼び出しでリセットされます。
達成する必要のある内容に応じて、セッション変数を使用するか、サービスを使用することをお勧めします。
(デフォルトではサービスはシングルトンです - サービスのインスタンスは1つしか存在しません)

+0

おそらく、「コントローラはリクエストスコープであり、すべての変数は各呼び出しでリセットされるため、それらのすべてがスレッドセーフです」ということを意味しますか?要求ごとにコントローラの新しいインスタンスが作成された場合、その値は別の要求によって拘束されることはありません。 – billjamesdev

+0

@billjamesdevはいはいはい..今すぐ編集しています。気づいてくれてありがとう。 :) –

関連する問題