我用Java開發的多線程應用程序。新線程功能是運行網絡協議客戶端和服務器。多線程共享變量
我的問題是在UDP「線程」,找到其他情況下,本地網絡中,並將它們存儲在列表中。但是所有新線程都是由其他類(主線程)調用的命名線程。所以我的問題是線程完成後得到處理列表。
我試圖通過列表構造函數的參數,我讓主線程等待線程結束,但隨後列表爲空時,它應該與一些元素。
謝謝。
編輯與示例代碼
public class MainClass{
public static void main(String[] args) {
List<String> tmp = new ArrayList<>();
Thread t1 = new Thread(UDPClient(tmp));
t1.start();
t1.join();
//It should be one but it'll be 0
System.out.println(tmp.size);
}
}
和separeted類:
public class UDPClient implements Runnable{
private List<String> foundInstances;
public UDPClient(List<String> instances)
{
foundInstances = instances;
}
public void run()
{
//do stuff
foundInstances.add("Hello world");
}
}
這是一個簡單的例子...
那麼你想通過一個列表?有線程安全列表,你可以在這裏找到他們選擇最好的一個適合你http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html –
讓我們想象一下我有2個線程:運行udp客戶端(命名線程,分離類)的主要線程和其他線程...在主線程中,我使用udp客戶端類創建一個新線程並啓動它。我如何從主線內的線程中獲取找到的實例? 我試圖通過參數來傳遞一個列表到UDP類的構造和使用,但我不能使用,因爲該列表是在結束時清空。 – nervousDev
@nervousDev從不使用評論提供更多信息。始終編輯您的問題以改進它!你可能會尋找這一概念被稱爲期貨(見https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html) – GhostCat