首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一个线程中的对象运行方法

从另一个线程中的对象运行方法
EN

Stack Overflow用户
提问于 2013-05-26 21:24:47
回答 1查看 1.4K关注 0票数 2

我有一个用于绘画的LibGDX应用程序和一个用于客户端或服务器的线程。连接是使用Kryonet完成的。当你的对手创建并执行某项操作时,会收到一条消息,因此:

代码语言:javascript
复制
public void received(Connection con, Object object) {

                            TroopMessage tm = (TroopMessage)object;                         
                            fortress.map.addSoldier(tm.kind, true);
                            System.out.println("recieved");

                            connection = con;
}

当这个回调被调用时(而且它是正确的),我得到"No OpenGL context found in the current thread“。我认为它正在寻找MyClient线程中的对象堡垒。我想调用fortress.map.addSoldier,它引用当前存在于另一个线程中的对象。

代码语言:javascript
复制
public class Fortress extends Game implements ApplicationListener{
    private OrthographicCamera camera;
    private SpriteBatch batcher;

    public static MyServer server;
    public static MyClient client;

    public static Map map;
[....]

如何从另一个线程调用该方法?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2013-05-26 21:37:31

在Libgdx中,你可以使用Gdx.app.postRunnable(Runnable r)请求主要的OpenGL-context-有渲染线程来运行一些代码。有关应用程序线程的信息,请参阅Libgdx wiki:https://code.google.com/p/libgdx/wiki/ApplicationThreading

正如注释所指出的,Java对象通常不为线程“所有”。"OpenGL context“在某种程度上是一个例外,因为只允许一个线程更改OpenGL状态。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16759670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档