red5中的多线程

时间:2011-02-23 09:07:12

标签: java red5

我有一个工作的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);

2 个答案:

答案 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;
    }