我有一个工作的red5应用程序,我正在使用MultiThreadedApplicationAdapter,但多线程并不真正起作用。这是一个例子,我想要它做的是让多个客户端调用test()并返回而不阻塞其他客户端。然而,发生的事情是第二个客户端必须等待第一个客户端完成然后执行test()。知道如何使这项工作?感谢。
public class Application extends MultiThreadedApplicationAdapter {
public void test()
{
System.out.println("test "+System.currentTimeMillis());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
客户端代码如下所示
conn.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
conn.connect(server);
conn.call("test",null);
答案 0 :(得分:4)
感谢您在我们的套接字处理中发现一个主要错误,它与最新版本的Mina(版本2.0.4)没有按预期运行。我将在以后进一步探讨这个问题,但现在这个问题已在修订版4270修复
答案 1 :(得分:0)
ApplicationAdapter已经有ScheduleJob来管理多线程。
示例
public boolean connect(IConnection conn, IScope scope, Object[] params) {
iconn = (IServiceCapableConnection) conn;
appScope = scope;
createSharedObject(appScope, "thread", false);
//updateArray();
this.addScheduledJob(100, new IScheduledJob() {
@Override
public void execute(ISchedulingService jobs0)
throws CloneNotSupportedException {
System.out.println(sendList);
iconn.invoke("receiveVariable", new Object[] { sendList.toArray() });
sendList.clear();
try {
Thread.sleep(5000);
updateArray();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
return true;
}