Я работаю над проектом, где мне нужно передавать данные асинхронно между потоками в Java и не может найти достойное решение. Это должно произойти вживую, потому что вспомогательный поток может продолжаться вечно.Передача данных асинхронно между потоками в Java
Ниже приведен пример кода, который иллюстрирует то, что я пытаюсь сделать. пакет test.project;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
public class TestProject {
public static void main(String[] args) {
Thread thread = new Thread(new Generator());
thread.start();
}
}
class Generator implements Runnable {
@Override
public void run() {
Timer timer = new Timer();
timer.schedule(new TimerTask(){
@Override
public void run() {
Random r = new Random();
// I need to get this back to the main thread to update the UI
System.out.println(r.nextInt(50000));
}
}, 200, 200);
}
}
Приведенный выше код предназначен только для иллюстрации. Фактическая проблема, которую я пытаюсь решить, состоит в том, что у вас есть несколько потоков данных в фоновом потоке, и как только данные поступают, мне нужно передать их обратно в основные потоки для обновления пользовательского интерфейса.
Это проект JavaFX, а не Android.
Look для одновременного Producer/Потребительские Узоры на Google –
Это сообщение может быть полезно: http://stackoverflow.com/questions/7229284/refreshing-gui-by-another-thread-in-java-swing – uahakan
RxJava - это интересная библиотека, которая будет использоваться, когда вы перейдете к кривой обучения. –