![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| gelo86 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 388 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
Добрый день. Всю суть рассказать не могу (секрет фирмы). У меня есть список Account'ов. Мне надо с каждым Account'ом сделать три шага:
1. Подсчитать определенные коэффициенты. 2. Вычислить окончательные суммы. 3. Сгенерировать каждому PDF документ. Все три шага одному Account'у должны идти в описанной последовательности (последующий шаг использует результат предыдущего шага, который сохраняется в базе данных). Использую thread pool ( Executors.newFixedThreadPool ) Код выглядит примерно так:
Так запуская каждый шаг, я знаю, что в базе данных уже будет результат предыдущего шага. Клиент требует, чтобы была возможность запускать каждый шаг отдельно (если вдруг надо будет руками подрегулировать какие-то данные определенного шага), но в большинстве случаев будут запускаться все три. Вопрос в том, как можно сделать (если запускаются все три шага) чтобы следующий шаг брал данные не из базы данных но прямо от предыдущего шага, т.е. как сделать, чтобы например executor.submit(new Calculate(account)); вызывался не из цикла, а по завершению например Future<PreCalulationResult>preResultFuture = executor.submit(new Precalculate(account));. Побывал добавлять preResultFuture в ArrayList и каждому в цикле вызывать get(), но проблема в том, что тогда очень большое количество объектов хроняться в heap'е (memory leak na 1GB). Да и получаеться много if'ов, запускать / не запускать шаг, брать из базы данных или ждать результат от другого Runnable/Future. Может есть решения для таких ситуаций / design patter ? |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |