Как правильно запустить поток в FX приложении?

 
 
 
Сообщения:96
Нужно запустить некий запрос, что берет информацию из youtubeapi, подсчет и перебор занимает продолжительное время - около 20 сек.
Требуется, чтоб во время исполнения не зависала, при етом, естественно нужно записать инфу в список.

Как ето сделать в отдельном потоке правильно?

вот пример кода:

Callable<ArrayList<String>> callable = () -> someMethod(); //someMethod - собственно метод, осуществляющий запрос
Future<ArrayList> future = executor.submit(callable);
someVisualize(future.get());//визуализация в окне


есстественно не работет (приложение подвисает напрочь, пока не получит все даннье)
Подскажите плз
Изменен:13 мар 2018 17:53
 
 
Сообщения:636
Quote:
get
V get()
throws InterruptedException,
ExecutionException
Waits if necessary for the computation to complete, and then retrieves its result.
Returns:
the computed result
Throws:
CancellationException - if the computation was cancelled
ExecutionException - if the computation threw an exception
InterruptedException - if the current thread was interrupted while waiting

https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Future.html

Я только учусь
 
 
Сообщения:96
Tachkin:
get
V get()
throws InterruptedException,
ExecutionException


никаких Exception у меня не возникает.
 
 
Сообщения:96
Tachkin:
Waits if necessary for the computation to complete


и ето мне вполне понятно - мне не понятно как правильно, т.к. другого способа я не знаю.
Именно за етим я пришел на форум
 
 
Сообщения:636
Hltr:
мне не понятно как правильно

передай в поток сущность, которую надо обновить, пусть поток сам обновляет данные на форме. Ну и почитай про паттерн "Наблюдатель".

Я только учусь
 
 
Сообщения:96
Tachkin:
передай в поток сущность, которую надо обновить, пусть поток сам обновляет данные на форме. Ну и почитай про паттерн "Наблюдатель".

Спасибо, я попробую.

Но все-же...ни как нельзя запустить поток, чтоб он работал, а главное окно не висело и откликалось?
И пусть форма обновится, когда обновится....
 
 
Сообщения:636
Hltr:
Но все-же...ни как нельзя запустить поток, чтоб он работал, а главное окно не висело и откликалось?
И пусть форма обновится, когда обновится....

Ага, вот именно для этого:
Tachkin:
передай в поток сущность, которую надо обновить, пусть поток сам обновляет данные на форме. Ну и почитай про паттерн "Наблюдатель".

Кинь сюда весь код или сцыль на github. На коде понятнее будет.

Я только учусь
Изменен:14 мар 2018 17:17
 
 
Сообщения:1561
Concurrency in JavaFX
 
Модераторы:frymock
Сейчас эту тему просматривают:Нет