2011-09-21 20 views
1

我打算使用LuaJava在我的Java/Android應用程序中運行腳本。在使用LuaJava時如何處理Lua代碼?

  • 當我運行Lua腳本時,它是否在另一個線程中執行?
  • 如何管理Lua代碼的執行,如何知道腳本執行完成? 如果我想讓我的Java程序等待Lua代碼完成,那麼我該怎麼做?

我的第一個猜測是使用一些信號量並從Lua調用Java回調函數。我如何以正確的方式做到這一點?

代碼爲UPD

的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的那樣。

回答

2

當我運行Lua腳本時,它是否在另一個線程中執行?

你會知道,未來的Java語句執行在調用腳本中的一個後,當該腳本已經「完成」的執行。


發生這種情況是因爲他們使用不同的流寫入到標準輸出。他們有不同的潮紅行爲,所以一個會在另一個之前發生。但是代碼的實際執行不是線程化的。

如果你想測試這個,只需讓Lua腳本返回一些東西,然後讓你的Java代碼從堆棧中獲得頂級的東西。它始終是Lua腳本生成的內容。

+0

請看看更新的OP。 –

+0

@Mighter:查看我的更新。 –

相關問題