在写入期间阻止其他线程访问对象

时间:2017-08-17 13:39:54

标签: java multithreading concurrency

假设我有一个对象:

class Obj o{ 
  public int x;
  public int y;
}

并且线程调用方法:

update(Obj o, int x, int y){
  o.x = x;
  o.y = y;
}

如何防止其他线程在执行'update'期间访问此对象的字段并等到方法完成后才能读取数据?

1 个答案:

答案 0 :(得分:1)

您需要将Obj类的成员设为私有,以便您可以控制其访问权限。然后,在类中移动update()方法并声明它是同步的。最后,在类中创建getX()和getY()方法以获取值并声明它们同步。

使所有这些方法成为类的成员并同步它们将确保它们不能在同一时间由不同的线程运行"。