2

Struts 2 アクションがスレッドセーフであることは知っています。しかし、これらの Action クラスにユーティリティの静的メソッドへのメソッド呼び出しが含まれている場合はどうなるでしょうか? スレッドの安全性は損なわれますか?

アップロードされた Excel ファイルなどを解析するユーティリティ メソッドを使用します。メソッドが静的であると宣言する場合、同期する必要がありますか?

アップデート:

ファイルを読み取っているだけで、ファイルはアクションに送信されるため、それ自体はスレッドセーフである必要があります...しかし、解析はユーティリティメソッドで行われるため、同期が必要かどうか疑問があります。ただし、メソッド スコープ変数のみにアクセスする場合は、スレッド セーフにする必要があります。しかし、File のようなパラメータはそのカテゴリに該当しますか?

4

1 に答える 1

3

私の理解によると、スレッド間でデータを共有して遊んでいない限り、スレッドの安全性は損なわれません。原子性、可視性などに注意する必要があります。

メソッド レベルの変数がある場合、各スレッド実行スタックでレプリケートされ、共有データがある場合にのみ競合状態が発生する可能性があるため、対処する必要があります。

スタックは現在のスレッドに対してローカルですが、そのスタック上の共有オブジェクトへの参照が存在する可能性があります。

于 2012-08-08T05:24:42.783 に答える