Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Остановить функцию до завершения всех потоков... Spring 3 
:(
    Опции темы
spruce
Дата 18.1.2012, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 11.11.2010
Где: Московская обл.

Репутация: нет
Всего: нет



Добрый день.

Подскажите, пожалуйста, как можно остановить выполнение функции, пока не закончится выполнение потоков распараллеленной функции?

У меня одна мысль - это использовать флаги. Но может есть какое-то встроенное средство в Spring?

Пишу с использованием Spring 3 MVC, запускаю на Tomcat 7.

Многопоточная функция
Код

package job;

import org.apache.log4j.Logger;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

@Component("asyncWorker")
public class AsyncWorker implements Worker {

    static Logger logger = Logger.getLogger(AsyncWorker.class);

    @Async
    @Override
    public void work() {
        String threadName = Thread.currentThread().getName();
        logger.debug("   " + threadName + " has began working.");
        try {
            logger.debug("working...");
            Thread.sleep(1000); // simulates work
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
        logger.debug("   " + threadName + " has completed work.");
    }
}


Функция, запускающая потоки:
Код

package poller;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

import job.Worker;

@Service
public class Poller {
    
    static Logger logger = Logger.getLogger(Poller.class);
    
    @Autowired
    @Qualifier("simpleWorker")
    private Worker simpleWorker;
        
    @Scheduled(cron="0 */5 * * * ?")
    public void doPoller(){
         
        logger.debug("Scheduler(every 5 minute) Started");
        
        for (int i=0;i<100;i++){
            simpleWorker.work();
        }

// ЗДЕСЬ НЕОБХОДИМО ОСТАНОВИТЬ ВЫПОЛНЕНИЕ ДО ТОГО МОМЕНТА
// ПОКА ВСЕ ПОТОКИ work НЕ ЗАВЕРШАТЬСЯ
// И ТОЛЬКО ПОСЛЕ ЭТОГО ПРОДОЛЖИТЬ ВЫПОЛНЕНИЕ

   
                ....
                ....
                ....
            
        logger.debug("End Schedule(every 5 minute)");
    }
}




Это сообщение отредактировал(а) spruce - 18.1.2012, 16:03
PM MAIL   Вверх
jk1
Дата 18.1.2012, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 5
Всего: 75



CountDownLatch должен подойти.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
spruce
Дата 19.1.2012, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 11.11.2010
Где: Московская обл.

Репутация: нет
Всего: нет



Да, то что нужно, спасибо smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.