2011-02-23 18 views
4

我有一個正在工作的red5應用程序,我正在使用MultiThreadedApplicationAdapter,但多線程並不真正起作用。這裏是一個例子,我想要它做的是讓多個客戶端調用test()並返回而不阻塞其他客戶端。然而,第二個客戶端必須等待第一個客戶端完成然後執行test()。任何想法如何使這項工作?謝謝。red5中的多線程

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

您的客戶如何調用測試方法? – Nick 2011-02-23 09:31:29

+0

'code'conn = new NetConnection(); conn.connect(server); conn.call(「test」,null);'code' – 2011-02-23 09:36:33

回答

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; 
    } 
4

感謝您對我們的插座處理髮現的重大缺陷,它無法工作,如預期與最新版本米娜(2.0.4版本)。我將在以後進一步探討這個問題,但現在這已修復爲修訂版4270