假设我们有一个如下所示的类。
public class MyClass {
@ThreadScoped
private Collection<String> words = new ArrayList<String>();
public void addWord(String word) {
words.add(word);
}
}
在运行时,我们只有这个类的一个实例,但它接受来自多个线程的调用。
我希望编写该类的开发人员能够忽略他们正在为多线程访问编写它的事实,而只是将该字段注释为“线程范围”。
是否可以创建一个方面,使每个调用线程都有自己的单词集合,就好像 words 字段本来是ThreadLocal
? 即使在多次调用该方法时,集合也应该绑定到线程。
我已经看到了set
和get
点切割,但无法找到一种使用它们的方法,它不需要我在对象上设置字段,这会破坏类的线程安全。
是否有另一种不使用方面的方法,例如使用代理或反射?