gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:50:53 24 4
gpt4 key购买 nike

我有两个线程。一个线程有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com