У меня есть многопоточное приложение, разработанное на Java. Новые потоки fuction - это запуск клиентов и серверов сетевых протоколов.Многопоточные общие переменные
Моя проблема заключается в «потоке» UDP, чтобы найти другие экземпляры в локальной сети и сохранить их в списке. Но все новые потоки называются нитями, называемыми другими классами (основной поток). Поэтому моя проблема заключается в том, чтобы получить обработанный список после завершения потока.
Я попытался передать список параметру конструктора, и я делаю основной поток ожидающим конца этого потока, но тогда список пуст, когда он должен быть с некоторыми элементами.
Спасибо.
EDIT с примером кода
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 Никогда не предоставляйте дополнительную информацию, используя комментарии. Всегда редактируйте свой вопрос, чтобы улучшить его! И концепция, которую вы ищете, называется Futures (см. Https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html) – GhostCat