Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 2
Регистрация: 22.02.2012
Сообщений: 62
1

Ожидание завершения рекурсии

29.01.2014, 16:19. Просмотров 981. Ответов 7
Метки нет (Все метки)


Приветствую. Прошу научить меня сабжу. Собственно как можно дождаться полного завершения рекурсии? Приведу пример:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args)
{
    System.err.println("START");
    recursion(1);
    System.err.println("DONE");
}
 
public void recursion(int i)
{
    if (i <= 10)
    {
        if (i % 10 == 0) System.out.println(i);
        else { System.out.println(i + " + " + 1); recursion(i + 1); }
    }
}
Тут мы видим следующее:
Кликните здесь для просмотра всего текста

START
DONE
1 + 1
2 + 1
3 + 1
4 + 1
5 + 1
6 + 1
7 + 1
8 + 1
9 + 1
10

Нужно чтобы "DONE" выводился в конце, после полного завершения рекурсии.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2014, 16:19
Ответы с готовыми решениями:

Ожидание завершения потоков, ExecutorService
Правила так правила. import java.util.Arrays; import java.util.Random; import...

ожидание завершения метода java
Как во время выполнения программы дождаться завершения выполнения метода и на основе его вычислений...

Ожидание завершения выполнения ThreadPoolExecutor
Здравствуйте, у меня такой вопрос. Есть ThreadPoolExecutor, в котором есть 5 потоков и очередь....

Ожидание завершения дочернего процесса
Небольшое отступление. Во время работы торрент-клиента периодически вся система полностью виснет на...

7
Заблокирован
29.01.2014, 16:35 2
public static void recursion
0
1999 / 1422 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
29.01.2014, 16:37 3
Цитата Сообщение от timkill Посмотреть сообщение
Нужно чтобы "DONE" выводился в конце, после полного завершения рекурсии.
А Вы не хотите весь вывод организовать в один поток, а не в два разных? Может, тогда будет соблюдаться последовательность сообщений?
1
1 / 1 / 2
Регистрация: 22.02.2012
Сообщений: 62
29.01.2014, 16:54  [ТС] 4
Цитата Сообщение от verylazy Посмотреть сообщение
public static void recursion
Нет, не помогло.

Цитата Сообщение от Skipy Посмотреть сообщение
А Вы не хотите весь вывод организовать в один поток, а не в два разных? Может, тогда будет соблюдаться последовательность сообщений?
Разве сейчас код выполняется не в одном потоке? Отладка показала однопоточный результат.
0
1999 / 1422 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
29.01.2014, 17:05 5
Вы между System.out и System.err разницы вообще не видите? Это потоки? Один или два?

P.S. Сколько вообще в Java сущностей под названием поток?
0
1 / 1 / 2
Регистрация: 22.02.2012
Сообщений: 62
29.01.2014, 17:33  [ТС] 6
Цитата Сообщение от Skipy Посмотреть сообщение
Вы между System.out и System.err разницы вообще не видите? Это потоки? Один или два?

P.S. Сколько вообще в Java сущностей под названием поток?
Действительно, наверное просто не заметил.
0
Кандёхаем веселее!
295 / 327 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
30.01.2014, 04:13 7
Цитата Сообщение от Skipy Посмотреть сообщение
Вы между System.out и System.err разницы вообще не видите? Это потоки? Один или два?
Все равно не понимаю, почему так происходит. Разве вывод "DONE" не должен дождаться, пока прошлый метод закончится(он же не асинхронный)?

Добавлено через 15 минут
Вроде бы сам вывод асинхронный.
0
1999 / 1422 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
30.01.2014, 09:39 8
Ну и что, что метод закончился. Есть такая вещь - буферизация называется. Никто не гарантирует, что на консоли символы появятся в тот момент, когда вызван метод.

Кроме того, у Вас тут два потока выводят в одно устройство. И как там внутри происходит слияние, знают только разработчики JRE. Тут даже flush не помогает, как показывает практика.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2014, 09:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Ожидание завершения работы AsyncTask
Здравствуйте! Есть функция. В ней запускаю работу класса AsyncTask. В этой же функции дожидаюсь...

Пароль, и ожидание завершения проверки
Всем привет. Есть задача: 1. Например идёт выполнение какого-то кода. 2. Встречается метод...

Ожидание завершения процесса по ID
Всем доброго времени суток, подскажите пожалуйста как решается такая задача: есть ID процесса,...

Ожидание завершения AsyncTask
Имеется класс &quot;расширяющий&quot; AsyncTask. Как я понимаю при создании объекта этого класса создается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.