【问题标题】:How is Lua code execution handled when using LuaJava?使用 LuaJava 时如何处理 Lua 代码执行?
【发布时间】:2011-11-22 06:06:18
【问题描述】:

我打算使用 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);
    }

卢阿:

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

在控制台中,我看到 Java 先打印它的字符串,然后 Lua 才打印。

【问题讨论】:

    标签: java android lua


    【解决方案1】:

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

    没有。

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


    这是因为他们使用不同的流来写入标准输出。他们有不同的冲水行为,所以一个会在另一个之前发生。但是代码的实际执行并不是线程化的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-03
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 2011-07-20
      • 2017-11-07
      相关资源
      最近更新 更多