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

标签 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”期间访问该对象的字段并等待该方法完成后再读取数据?

最佳答案

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

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

关于java - 防止其他线程在写入期间访问对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45736735/

相关文章:

Java多线程,主线程为什么停止了?

c++ - 如何打印linux上进程拥有的所有线程的线程ID

javascript - 如何在 IE7 中控制 Javascript 线程和重绘

在输入中使用空格时 Java 扫描器输入不匹配

java - 如何通知用户需要注意 JTabbedPane 中的特定选项卡?

java - 将变量的值设置为 application.properties 文件中的一个属性

performance - 测试并发性的基准问题

java - 使用外部服务器reSTLet框架

multithreading - Tomcat maxThread取值困境

Java 内存模型 - 有人可以解释一下吗?