说我有以下课程
public class Hello {
private int first = 0;
private String result = "";
private Queue<Integer> queue1 = new Queue<>();
private Queue<Integer> queue2 = new ConcurrentLinkedQueue<>();
public int getFirst() {
return first;
}
public void setFirst(int first) {
this.first = first;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.first = first;
}
public void addQueue1(int number) {
queue1.add(number);
}
public void addQueue12(int number) {
queue2.add(number);
}
}
现在假设多个线程想要修改此类的实例。有没有办法可以将整个类Atomic转为使用同步关键字?换句话说多个线程可以调用任何getter或setter但是实例需要原子地修改?我怎样才能使用AtomicReference并将其更改为线程安全类?
答案 0 :(得分:1)
一个类不能是原子的;只有动作可以是原子的。
没有办法说“这个类上的所有动作都必须是原子的”,因为它的定义太不明确了。你需要一种方式说“这些束和一组形成一个原子,但这些束形成另一个原子。”定义它的方法是通过synchronized
块 - 这正是它们的用途。