使用LuaJava时,Lua代码的执行是如何处理的?

我打算使用LuaJava在我的Java/Android应用程序中运行脚本。

  • 当我运行Lua脚本时,它会在另一个线程中执行吗?
  • 我如何管理Lua代码的执行,如何知道脚本完成执行? 如果我希望我的Java程序等待Lua代码完成,我该怎么做?

我最初的猜想是使用一些信号量并从Lua中调用Java回调。我该如何正确地做到这一点?

附带代码更新

Java:

    LoadScript(final String filename) {
        this.luaState = LuaStateFactory.newLuaState();
        this.luaState.openLibs();
        this.luaState.LdoFile(filename);//launch Lua script to print lines
        printLines();// print Java lines
    }

    void printLines(){
        for(int i=0;i<100;i++)
            System.out.println("From java: "+i);
    }

Lua:

for i=0,100
  do
    print("From lua: ",i)
end

在控制台中,我看到Java首先打印出自己的字符串,然后是Lua。

原文链接 https://stackoverflow.com/questions/7505406

点赞
stackoverflow用户734069
stackoverflow用户734069

将下面翻译成中文并且保留原本的markdown格式

当我运行Lua脚本时,它会在另一个线程中执行吗?

不会的。

当调用脚本的Java语句之后的下一个Java语句执行时,您将知道脚本的"完成"执行。


这是因为它们使用不同的流来写入std-out。它们具有不同的刷新行为,因此一个将在另一个之前发生。但是代码的实际执行不是多线程的。

如果您想测试此功能,只需使Lua脚本返回某些内容,然后让您的Java代码从堆栈中获取顶层内容。它将始终是Lua脚本生成的内容。

2011-09-21 19:43:59