Improve documentation and samples.
This commit is contained in:
@@ -1,18 +1,22 @@
|
||||
|
||||
|
||||
import org.luaj.vm2.Globals;
|
||||
import org.luaj.vm2.LuaValue;
|
||||
import org.luaj.vm2.lib.jse.JsePlatform;
|
||||
|
||||
/** Simple program showing the minimal Java program to launch a script. */
|
||||
public class SampleJseMain {
|
||||
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
String script = "examples/lua/hello.lua";
|
||||
|
||||
// create an environment to run in
|
||||
Globals _G = JsePlatform.standardGlobals();
|
||||
_G.loadFile(script).arg1().call( LuaValue.valueOf(script) );
|
||||
Globals globals = JsePlatform.standardGlobals();
|
||||
|
||||
// Use the convenience function on the globals to load a chunk.
|
||||
LuaValue chunk = globals.loadFile(script);
|
||||
|
||||
// Use any of the "call()" or "invoke()" functions directly on the chunk.
|
||||
chunk.call( LuaValue.valueOf(script) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
54
examples/jse/SampleMultiThreaded.java
Normal file
54
examples/jse/SampleMultiThreaded.java
Normal file
@@ -0,0 +1,54 @@
|
||||
import java.io.IOException;
|
||||
|
||||
import org.luaj.vm2.Globals;
|
||||
import org.luaj.vm2.lib.jse.JsePlatform;
|
||||
|
||||
/** Simple toy program illustrating how to run Luaj in multiple threads.
|
||||
*
|
||||
* By creating separate Globals in each thread, scripts can be run in each thread.
|
||||
*
|
||||
* However note the following:
|
||||
* - type-related metatables such as LuaNumber.s_metatable are shared by all threads, so are not thread-safe.
|
||||
* - creating additional threads within a Java element called by lua could result in shared access to globals.
|
||||
*/
|
||||
public class SampleMultiThreaded {
|
||||
|
||||
static class Runner implements Runnable {
|
||||
final String script1, script2;
|
||||
Runner(String script1, String script2) {
|
||||
this.script1 = script1;
|
||||
this.script2 = script2;
|
||||
}
|
||||
public void run() {
|
||||
try {
|
||||
// Each thread must have its own Globals.
|
||||
Globals g = JsePlatform.standardGlobals();
|
||||
|
||||
// Once a Globals is created, it can and should be reused
|
||||
// within the same thread.
|
||||
g.loadFile(script1).call();
|
||||
g.loadFile(script2).call();
|
||||
|
||||
} catch ( Exception e ) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(final String[] args) throws IOException {
|
||||
final String script1 = args.length > 0? args[0]: "test/lua/perf/nsieve.lua";
|
||||
final String script2 = args.length > 1? args[1]: "test/lua/perf/binarytrees.lua";
|
||||
try {
|
||||
Thread[] thread = new Thread[10];
|
||||
for (int i = 0; i < thread.length; ++i)
|
||||
thread[i] = new Thread(new Runner(script1, script2),"Runner-"+i);
|
||||
for (int i = 0; i < thread.length; ++i)
|
||||
thread[i].start();
|
||||
for (int i = 0; i < thread.length; ++i)
|
||||
thread[i].join();
|
||||
System.out.println("done");
|
||||
} catch ( Exception e ) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user