Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 防止其他线程在写入期间访问对象_Java_Multithreading_Concurrency - Fatal编程技术网

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

Java 防止其他线程在写入期间访问对象,java,multithreading,concurrency,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; } 如何防止其他线程在执行“更新”期间访问此对象的字段,并等待方法完成读取数据?您需要将Obj类的成员设置为私有,以便控制其访问权限。然后,将update方法移动到类中并声明它已同步。最后,在类中创建getX和getY方法,以获取值并声明它们已同步 使所有这些

假设我有一个对象:

class Obj o{ 
  public int x;
  public int y;
}
线程调用该方法:

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

如何防止其他线程在执行“更新”期间访问此对象的字段,并等待方法完成读取数据?

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


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

一个简单的解决方案是使用同步方法。