-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
||||||
1 | ||||||
Потоки не выполняются параллельно15.06.2016, 08:37. Показов 2894. Ответов 18
Метки нет (Все метки)
Почему потоки выполняются один за другим?
1
|
15.06.2016, 08:37 | |
Ответы с готовыми решениями:
18
Потоки осуществляющие сравнение фраз параллельно по словам AsyncTask doInbackground и onPostExecute выполняются параллельно ? Потоки выполняются не асинхронно Многопоточность. Потоки выполняются по очереди |
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
|
||||||
15.06.2016, 08:47 | 2 | |||||
Сообщение было отмечено Ilot как решение
Решение
тут ошибка.
0
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
15.06.2016, 11:06 [ТС] | 3 |
А чем отличается этот код?
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
15.06.2016, 11:20 | 4 |
Knjagskij, ты книжку-то читал? join() вернёт управление только когда соответсвующий поток завершится.
0
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
15.06.2016, 11:24 [ТС] | 5 |
Почему тогда второй вариант не работает так же как и первый? Ведь он после t1.join() возвращает управление main и запускает поток t2.
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
15.06.2016, 11:27 | 6 |
В твоём варианте второй поток создаётся только по завершении первого, благодаря join().
0
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
15.06.2016, 11:45 [ТС] | 7 |
А почему важно время создания? Ведь, по идее, должно быть важно только время запуска.
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
||||||
15.06.2016, 11:54 | 8 | |||||
Какого запуска?
Ты сам сделал так, что потоки не существуют одновременно.
0
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
15.06.2016, 12:18 [ТС] | 9 |
А что меняется во втором случае?
Ведь, выполнение потоков должно зависеть от join(), а не времени их создания
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
15.06.2016, 12:22 | 10 |
Knjagskij, я тебе уже объяснил, что второй поток не создаётся, пока не стартует и не завершится первый. join() не возвращает управление, и те строчки просто не выполняются.
0
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
15.06.2016, 13:34 [ТС] | 11 |
0
|
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
|
|
15.06.2016, 14:16 | 12 |
восприми join как подождать пока закончится поток
у тебя получается так: стартуем первый поток ждем пока кончится первый поток стартуем второй ждем, пока закончится второй
0
|
77 / 50 / 16
Регистрация: 17.05.2015
Сообщений: 262
|
||||||
16.06.2016, 02:15 | 13 | |||||
Ну не тупим.
0
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
16.06.2016, 11:04 [ТС] | 14 |
Может быть такая ситуация, когда поток-родитель завершится до выполнения *.join()?
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
16.06.2016, 11:07 | 15 |
Нет. join() как раз и не даёт ему завершиться раньше.
0
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
16.06.2016, 11:13 [ТС] | 16 |
Получается, что главный поток работает, потом при создании автоматически запускается второй поток, а join() вызывается из главного потока, т.е. мы управляем дочерним потоком из главного?
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
16.06.2016, 11:16 | 17 |
join() просто ждёт пока вторичный поток отработает и не возвращает управление, не давая порождающему потоку выполняться дальше, в том числе не даёт ему завершиться раньше вторичного.
Ну если ты вставишь return, например, до вызова join(), то ясно, что он завершится раньше принудительно.
0
|
-2 / 8 / 2
Регистрация: 10.11.2008
Сообщений: 776
|
|
16.06.2016, 11:54 [ТС] | 18 |
Я имел ввиду, может ли процесс-родитель завершится в промежуток времени между стартом нового процесса и join()
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
|
|
16.06.2016, 11:57 | 19 |
Только если программист криворукий или произошла какая-то ошибка.
Твой вопрос примерно так звучит: может ли программа прерваться неожиданно в каком-то месте.
0
|
16.06.2016, 11:57 | |
16.06.2016, 11:57 | |
Помогаю со студенческими работами здесь
19
Потоки не работают параллельно Как сделать, чтобы потоки выполнялись параллельно? Потоки ставятся в очередь, а не идут параллельно, объясните, пожалуйста [XP] Некоторые скрипты выполняются из строки и не выполняются из файла без вывода ошибки Что такое потоки ввода, потоки вывода? Байтовые потоки и потоки символов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |