在游戏中的多个线程之间共享对象

时间:2012-10-30 15:57:46

标签: java multithreading attributes

编程语言:JAVA / Android

线程“结构”

主线(开始其他踏板)

---(多重属性)

--- AI线程

--- TouchListener线程

---脚本线程

---渲染线程

描述

属性的一个例子是由scritping线程指示的actor; 它是由AI线程计算的路线和渲染器改变的3D坐标。

所有线程都不是可以访问属性的私有内部类,而是实现Runnable的简单类

问题

如何在无休止运行的线程之间共享对象(属性)? 每个线程都必须能够访问主线程的所有资源。 (问题不在于如何同步它们,我知道“同步”和锁的概念已经存在)

3 个答案:

答案 0 :(得分:1)

您可以创建一个类SimulationModel,它由Main thread / class实例化,并由setter或其构造函数提供给其他人。

此类包含所有数据并拥有锁以保持一致性。

关于数据操作的逻辑也可能在这里发生。

答案 1 :(得分:0)

如果您没有询问是否可以访问对象的线程安全,您是否只是询问如何在其他线程中访问它们?如果是这样,只需通过构造函数将它们传递给那些可运行的对象。

答案 2 :(得分:0)

一种选择是制作“属性”static variables in a class to use them globally

答案的例子:

public class Global {

public static int a;
public static int b;
}
     

现在您可以通过调用

从任意位置访问a和b
Global.a;

Global.b;