簡體   English   中英

Java:在多個線程上等待/通知

[英]Java: Wait/Notify on multiple threads

我有一個類,其中包含對通過TCP(每個客戶端1個)接收對象的工作線程的引用的集合。

我正在嘗試在類中創建方法getMessage() ,該方法要等到任何工作線程都收到一條消息並返回它。

我現在得到的是一個輪詢系統:

public Object getMessage() {  
    while (true) {  
        for (Worker w : workers.values())  
             if (w.msgNumber() != 0)  
                 return w.getLastMsg();  
        Thread.sleep(100);  
    }  
}

它可以工作,但是我認為它不是非常可擴展的。

我知道我可以對每個工作人員執行wait(timeout)操作,但是問題仍然存在。

是否存在某種等待多個線程的等待/通知機制?

您可以考慮使用阻塞隊列在線程之間進行通信。 工作線程將插入隊列,而getMessage()函數從隊列中提取一條消息。

怎么樣:

   try {
        ServerSocket srv = new ServerSocket(port);

        // Wait for connection from client.
        while (true) {
            System.out.println("Listening...");
            // Waits for connection
            new Thread(new ServerWorkerThread(srv.accept())).start(); 

        }
    } catch (IOException e) {
      //handle
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM