次のようなクラスがあるとします。
public class MyClass {
@ThreadScoped
private Collection<String> words = new ArrayList<String>();
public void addWord(String word) {
words.add(word);
}
}
実行時には、このクラスのインスタンスは 1 つしかありませんが、複数のスレッドからの呼び出しを受け入れます。
クラスを作成する開発者が、マルチスレッドアクセス用に作成しているという事実を無視して、フィールドに「スレッドスコープ」として注釈を付けられるようにしてほしい。
まるでwordsフィールドがThreadLocal
. メソッドが複数回呼び出された場合でも、コレクションはスレッドに結び付けられる必要があります。
私はset
およびget
ポイント カットを見てきましたが、オブジェクトにフィールドを設定する必要がなく、クラスのスレッド セーフを台無しにするそれらを利用する方法がわかりません。
プロキシやリフレクションなど、側面を利用しない別の方法はありますか?