gpt4 book ai didi

java - 使用 LuaJava 时如何处理 Lua 代码执行?

转载 作者:行者123 更新时间:2023-11-29 22:19:56 26 4
gpt4 key购买 nike

我打算使用 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 打印。

最佳答案

When I run Lua script, is it executed in some another thread?

没有。

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


发生这种情况是因为他们使用不同的流来写入标准输出。它们有不同的冲洗行为,所以一个会先于另一个发生。但是代码的实际执行不是线程化的。

如果你想测试这个,只需让 Lua 脚本返回一些东西,然后让你的 Java 代码从堆栈中获取最上面的东西。它始终是 Lua 脚本生成的内容。

关于java - 使用 LuaJava 时如何处理 Lua 代码执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7505406/

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