|
2 / 2 / 0
Регистрация: 14.02.2012
Сообщений: 34
|
|
Многопоточность: вызвать метод главного потока из второстепенного потока21.02.2017, 16:52. Показов 2582. Ответов 9
Метки нет (Все метки)
Здравствуйте.
Эта тема всеми избита, знаю. Но у меня очень ограничено время, поэтому рискую и пишу вопрос тут: Пишу приложение консольное. Оно обращается на сервер, что-то скачивает, потом показывает на экране. Цель - запускать обращение на сервер в отдельном потоке, и когда данные скачаются, показать на экране. Нужно - передать во второстепенный поток один объект (строку с командой), а когда он отработает, вызвать метод в главном потоке, передав туда другой объект (строку с результатом). Я уже три часа не могу найти подходящую конструкцию. О_О Помогите, пожалуйста. Как минимум, по какой теме гуглить. (уже использовал Runnable, Callable, но ощущение, что они не подходят, нужно что-то ещё)
0
|
|
| 21.02.2017, 16:52 | |
|
Ответы с готовыми решениями:
9
Многопоточность. Управление потоками из главного потока Многопоточность. Как завершить неисполльзуемые потоки из главного потока Обращение к методу главного потока из второстепенного |
|
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
|
|
| 21.02.2017, 17:55 | |
|
Типа навскидку:
- во второстепенном потоке в глобальную переменную заносишь результат стринга; - В главном потоке при помощи join ждешь втор. поток. - ну и потом выводишь сообщение из стринга. Смотри только чтобы в стринг никто не писал, кроме втор. потока. Если кто-то ещё пишет делай стринг volatile или делай синхронизацию по объекту.
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 21.02.2017, 18:58 | |
|
Ksar13th, если нужно только написать на экране, пишите из второстепенного потока. Никаких проблем не должно быть.
Если хотите именно ждать ответа тогда неочень понятно зачем вам поток создавать если вы все равно его ждать будите, но можете использовать Future. Даст тот же эффект что написал FreakMurderer, но написано будет человеческим языком.
0
|
|
|
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
|
|
| 21.02.2017, 19:10 | |
|
Почему это "Future" - человеческий язык, а стандартный Thread.join - не человеческий. Какое-то непонятное определение "человечности". К тому же, не уверен, но в недрах future по ходу и используется тот же join(или вернее Object.wait и object.notify)
0
|
|
|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,764
|
|||||
| 21.02.2017, 21:19 | |||||
|
0
|
|||||
|
-3 / 16 / 2
Регистрация: 21.11.2013
Сообщений: 151
|
||
| 21.02.2017, 22:52 | ||
Во вторых - давать новичку, которому нужно решить простенькую задачу из нескольких строк кода на вооружение высокоуровневую хрень, где нужно гоородить тонны лишних объектов, не пытаясь посвятить в базовые понятия как это работает - имхо мне как-то не по себе становится. Новичек набравшись базового опыта, должен потом сам для себя решить когда ему использовать средства из java.util.concurrent, а то в противном случае если что-то сломается или как-то придётся писать нестандартный код и человек будет чесать репу Добавлено через 1 час 9 минут ...
0
|
||
|
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,764
|
||
| 21.02.2017, 23:15 | ||
|
0
|
||
| 21.02.2017, 23:19 | |
|
Не по теме: FreakMurderer, Первый раз вижу столько минусов в репе. Друже, как ты умудрился?
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 22.02.2017, 00:41 | |
|
Дальнейший оффтоп будет удален.
Думаю ТС получил достаточно вариантов решения проблемы а так же других ценных советов.
0
|
|
| 22.02.2017, 10:13 | |
|
Не по теме: Я ещё добавлю, что ни один педагог будь он младшего или старшего звена, не пустит в конкаррент не преподав до этого примитивы синхронизации, волатайлы и другие стандартные методы. Ни один курс, или трейнинг по многопоточности без этого не обходится. Это ведь не просто так, не от балды идет. Как говорится не зная Runnable не лезь в Callable
0
|
|
| 22.02.2017, 10:13 | |
|
Помогаю со студенческими работами здесь
10
Как вызвать метод из главного потока находясь в созданом Выполнение слота основного потока через сигнал второстепенного потока
Как вызвать методы Unity вне главного потока? Не получается с вторичного потока обратиться напрямую к объекту из главного потока Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|