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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неверно работает scheduler.scheduleAtFixedRate(..), таймер ждет > заданного в параметраx t 
V
    Опции темы
marmota
Дата 19.10.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здраствуйте. Проблема такая:
есть таймер:

Код

final Runnable sendRequestToChartingTarget = new Runnable() {
            public void run() {
                   Thread.sleep(8000);
                   logger.debug(";)");
            }
        };

ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
ScheduledFuture<?> requestHandle = scheduler.scheduleAtFixedRate
                (sendRequestToChartingTarget, 0, 1, SECONDS);


В доке по написано scheduleAtFixedRate: Creates and executes a periodic action that becomes enabled first after the given initial delay, and subsequently with the given period; that is executions will commence after initialDelay  then initialDelay+period, then initialDelay + 2 * period, and so on. If any execution of the task encounters an exception, subsequent executions are suppressed. Otherwise, the task will only terminate via cancellation or termination of the executor. 

А в реальности он жден не 1 секунду, в 8, хотя должен начать следующее выполнение команды через секунду.
14:15:48 pool-1-thread-1 DEBUG [madhatter.script.TestScriptManager.run()] ;)
14:15:56 pool-1-thread-1 DEBUG [madhatter.script.TestScriptManager.run()] ;)
14:16:04 pool-1-thread-1 DEBUG [madhatter.script.TestScriptManager.run()] ;)
14:16:12 pool-1-thread-1 DEBUG [madhatter.script.TestScriptManager.run()] ;)
14:16:20 pool-1-thread-1 DEBUG [madhatter.script.TestScriptManager.run()] ;)
14:16:28 pool-1-thread-1 DEBUG [madhatter.script.TestScriptManager.run()] ;)
14:16:36 pool-1-thread-1 DEBUG [madhatter.script.TestScriptManager.run()] ;)

Почему так происходит? Я чего-то не понимаю?

Спасибо.
PM MAIL   Вверх
jer1
Дата 19.10.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(marmota @ 19.10.2007,  12:58)
...
Executors.newSingleThreadScheduledExecutor();
...


Поток один, все задачи выполняются последовательно(закончили одну, ждем "period", переходим к другой). Твой код можно представить схемотически так:
Код

        Thread.sleep(TimeUnit.SECONDS.toMillis(0/*initial delay*/));
        
         sendRequestToChartingTarget.run();
         Thread.sleep(TimeUnit.SECONDS.toMillis(1/*period*/));
        sendRequestToChartingTarget.run();
         Thread.sleep(TimeUnit.SECONDS.toMillis(1/*period*/));
        //... и так далее до остановки executorа 
       

        

--------------------
:w!q
PM MAIL   Вверх
marmota
Дата 19.10.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Гм.... а почему в таком случаее в документации написано, что будет выполняться один за другим? :(

те рещить эту проблему можно допустим так:
Код

Executors.newScheduledThreadPool(100);

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

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

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


 




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


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

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