2017-08-17 43 views
0

期间访问对象比方说,我有一个对象:防止其他线程写入

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

和一个线程调用方法:

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

如何防止其他线程可以访问域这个对象在执行'update'的过程中,并等到该方法完成读取数据?

+2

一个简单的解决方案是使用同步方法。 https://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html – urielSilva

回答

1

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

使所有这些方法的成员和同步他们将确保他们不能由“同一时间”由不同的线程运行。