java - 具有多个线程的Java中的对象指针

标签 java multithreading pointers

我有两个线程。一个线程有一个 myObjectManager 的实例。 myObjectManager 有一个对象列表,以及一个检索对象的方法(public myObjectClass getObjectById(int ID))

我需要第一个线程渲染 myObjectManagers 对象列表中的一个对象,第二个线程执行游戏逻辑并移动它等。

这是我尝试过的

//thread 1:
m = myObjectManager.getObjectById(100);
m.render();

//thread 2:
m = myObjectManager.getObjectById(100);
m.rotate( m.getRotation() + 5 ); //increment rotation value

但是,线程1似乎有一个没有更新旋转的对象实例。当我运行它时,渲染的对象没有旋转,但是当我让第二个线程打印出旋转值时,它被旋转了。

在 C++ 中,我只是让函数 getObjectById() 返回一个指向 myObjectClass 实例的指针,但我不确定当我说“return myInstance;”时 java 到底做了什么。 我如何在 Java 中做类似的事情?

抱歉,我是这门语言的新手!

最佳答案

在 Java 中,所有对象变量都是“指针”(或人们通常所说的“引用”)。问题一定出在别处。我的猜测是线程 1 甚至在线程 2 修改它之前就已经渲染了该对象。

编辑:另一种理论:后续的 render() 操作实际上并不改变屏幕显示。旋转值更新得很好 - 但它不会反射(reflect)到显示器上。

关于java - 具有多个线程的Java中的对象指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4717525/

相关文章:

c++ - 锁定相互引用的资源对

c# - 来自多个线程的安慰 session SendRequest() 正在阻塞

c - C 语言中的简单密码提示

c++ - 如果ap是一个指针,为什么我可以通过ap[i]来引用它的值呢?

java - 如何动态地将某个泛型类型分配给List?

java - 如何使用 Java 1.6 Annotation Processing 执行编译时织入?

java - 将变量与整数进行比较时,!= 运算符似乎不起作用

java - 未分类的 SQLException Jdbc 模板

c#线程并且不能调用invoke

c - 函数指针编译错误