Lua与Java相互交互的例子
来源:互联网 发布:犀牛软件 垃圾袋 编辑:程序博客网 时间:2024/06/06 01:28
demo.luapackage com.chilijoy.lua;
import java.io.File;
import java.util.Queue;
import java.util.Random;
import java.util.concurrent.ConcurrentLinkedQueue;
import org.apache.commons.lang3.RandomStringUtils;
import org.keplerproject.luajava.LuaState;
import org.keplerproject.luajava.LuaStateFactory;
/*******************************************************************************
*
* LuaDemo.java Created on 2014年7月28日
*
* Author: linfenliang
*
* Description:
*
* Version: 1.0
******************************************************************************/
public class LuaDemo {
public static final String luaPath = "." + File.separator + "conf" + File.separator ;
public static Queue<String> queue = new ConcurrentLinkedQueue<String>();
public static void main(String[] args) {
LuaState state = LuaStateFactory.newLuaState();
state.openLibs();
state.LdoFile(luaPath+"demo.lua");
new PublishMessage(state).start();
new SubscribeMessage(queue).start();
}
}
class PublishMessage extends Thread{
private LuaState state;
public PublishMessage(LuaState state) {
this.state = state;
}
@Override
public void run() {
while(true){
String value = RandomStringUtils.randomAlphabetic(32);
state.getField(LuaState.LUA_GLOBALSINDEX, "pushDataToQueue");
state.pushString(value);
state.call(1, 0);
try {
int time = (int)(new Random().nextDouble()*10);
time = time>0?time:3;
System.out.println("写入数据:"+value+",暂停 "+ time +" 秒");
Thread.sleep(time*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class SubscribeMessage extends Thread{
private Queue<String> queue;
public SubscribeMessage(Queue<String> queue) {
this.queue = queue;
}
@Override
public void run() {
int time = 3;
while(true){
try {
Thread.sleep(time*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(time+"秒取一次数据:"+this.queue.poll());
}
}
}
打印结果(示例)LuaDemo = luajava.bindClass("com.chilijoy.lua.LuaDemo");
function pushDataToQueue(data)
LuaDemo.queue:offer(data);
end
总结:写入数据:iQRYgmsRCKVggBNlCouEsTNLHmhKlHlT,暂停 8 秒
3秒取一次数据:iQRYgmsRCKVggBNlCouEsTNLHmhKlHlT
3秒取一次数据:null
写入数据:YSffHtLxknhgDoIRGzzSoBoqlzAjResi,暂停 6 秒
3秒取一次数据:YSffHtLxknhgDoIRGzzSoBoqlzAjResi
3秒取一次数据:null
写入数据:ubikJSKwedEhKalsigLvTCVEJEnLRiXN,暂停 3 秒
3秒取一次数据:ubikJSKwedEhKalsigLvTCVEJEnLRiXN
写入数据:YRrazjaOHVWZIIbMrBbUgVLrfSsVWDQm,暂停 4 秒
3秒取一次数据:YRrazjaOHVWZIIbMrBbUgVLrfSsVWDQm
3秒取一次数据:null
写入数据:zhuLoDjSJMpInVPwmCYkshRtWpLdIPwS,暂停 1 秒
写入数据:fnKpyQlsznsEmZHjtDvZDPOpzVHyNTtJ,暂停 8 秒
3秒取一次数据:zhuLoDjSJMpInVPwmCYkshRtWpLdIPwS
- Lua与Java相互交互的例子
- lua与c++交互的简单例子
- 通过例子学习Lua(5)--Lua与C的交互
- C/C++与Lua交互(C实现的Lua编译器的例子)
- 通过例子学习Lua(5) ---- Lua与C交互入门
- lua 与c的交互
- Lua与C的交互
- Lua与C的交互
- Lua与VC的交互
- lua与c的交互
- c++与lua的交互
- Lua与ObjC的交互
- C与Lua的交互
- Lua与C++的交互
- Lua的与C交互
- Android java 与 javascript互访(相互调用)的方法例子
- cocos2dx lua 接微博SDK(四)--lua与java的交互
- lua与c++的相互调用
- Lua学习笔记
- 希特勒的演讲
- hdu 1907——John & hdu 2509——Be the Winner
- k-近邻算法的初步研究
- 关联映射
- Lua与Java相互交互的例子
- 决策树算法
- Android开发:性能最佳实践-管理应用内存
- MATLAB——reshape 函数
- 简单实用nginx 配置 本机 虚拟主机 windows 下的。
- Android进程与线程
- BZOJ1577 USACO 2009 Feb Gold 1.Fair Shuttle Solution
- MFC GDI绘图基础
- 【安卓】