|
|
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
Добрый день! Читаю по поводу создания функций которые будут выполнять одну и ту же работу , и вот возникли вопросы : http://static.springsource.org/spring/docs/3.0.x/reference/scheduling.html 1. К примеру у меня есть метод Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: xml 1. execute - метод должен выполняться каждые 30 секунд и подчищать базу данных - операция в методе cancel(tObjectCancel); - может занять и больше 30 секунд ( очень сложная логика проверки каждого объекта перед его удалением) . из Этого у меня вопрос : как поведет себя ThreadPoolTaskScheduler ? 1)он будет ждать пока завершится этот тред и после этого - запустить его снова ? 2)он создаст еще один тред из пула и будет выполнять тоже задание при этом первый тред будет выполняться ?( со временем может получиться так что все подвинет ,когда весь пул исчерпается) 3)другое поведение? объясните какое у него поведение ? Как в этой же ситуации поведут себя другие реализации ? 1) Кварц 2) стандартная реализация java что будет , если указать не fixedDelay , а fixedRate и cron ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 09:17 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
Atum1Читаю по поводу создания функций которые будут выполнять одну и ту же работу , и вот возникли вопросы : http://static.springsource.org/spring/docs/3.0.x/reference/scheduling.html Все вопросы в стиле "прочитайте за меня документацию". По этой же ссылке что вы привели рассказывается про Concurrent и Synchronized executor-ы. Atum1как поведет себя ThreadPoolTaskScheduler ? 1)он будет ждать пока завершится этот тред и после этого - запустить его снова ? Зависит от executor-а. Они все описаны по ссылке выше. Если это пул, то в пуле, наверняка более одного потока. Если есть свободные потоки, то ждать никто никого не будет. Если в пуле только один поток, то запустить вторую параллельную задачу при занятоп потоке никак не выйдет. Atum12)он создаст еще один тред из пула Вы понимаете что такое пул? Нет такого "создать из пула". Можно создать поток, если не превышен лимит пула. Можно взять поток из пула и вернуть обратно. Нельзя "создать из пула". Atum1и будет выполнять тоже задание при этом первый тред будет выполняться ?( со временем может получиться так что все подвинет ,когда весь пул исчерпается) Ну, если у вас все задачи бесконечные, то да. Пул достигнет своего предела и перестанет выдавать потоки. "все подвинет" никакого отношения к происходящему не имеет. Ничего не "подвинет". Задачи, которые выполняются, так и будут выполнятся. А новые не будут запускаться, потому что все потоки заняты. Что из этого "подвинет"? Atum1Как в этой же ситуации поведут себя другие реализации ? 1) Кварц Как настроить так и поведет. Atum12) стандартная реализация java Spring Scheduler не более чем удобная обертка над "стандартной реализацией". Обычные таймеры в Java однопоточные. Что как бы намекает на ответ. А ScheduledThreadPoolExecutor это пул потоков. Что тоже и есть ответом на вопрос. Atum1что будет , если указать не fixedDelay , а fixedRate и cron ? Что на этот счет говорит документация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 11:15 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВсе вопросы в стиле "прочитайте за меня документацию". По этой же ссылке что вы привели рассказывается про Concurrent и Synchronized executor-ы. Есть проблемы с английским языком :) вот поэтому и разбираюсь. Т.е в случае когда он не будет ждать завершения, а будет еще раз вызывать метод - в начале метода нужно определить флаг признак окончания ?! так писал его или как static boolean в классе или как AtomicBoolean и входя в метод execute - проверять выполняет его кто-то или нет в данный момент? если он true - то устанавливать его в false до окончания цикла,а потом сбрасывать в true !? так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 11:23 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
Atum1Т.е в случае когда он не будет ждать завершения, а будет еще раз вызывать метод - в начале метода нужно определить флаг признак окончания ?! так Зачем? Atum1писал его или как static boolean в классе или как AtomicBoolean и входя в метод execute - проверять выполняет его кто-то или нет в данный момент? Цель какая?? [quot Atum1если он true - то устанавливать его в false до окончания цикла,а потом сбрасывать в true !? так ?[/quot] Нафига??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 11:25 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
Это не подвинет ,а подвиснет - опечатка :) Что из этого "подвинет"? - это "подвиснет" - или когда пул полностью задействует все свои потоки - он выбросит ошибку или будет выставлять новые задания в очередь , если конечно она предусмотрена реализацией ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 11:26 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
Atum1Есть проблемы с английским языком :) Стыдно должно быть. Я в школе help по турбо паскалю читал со словарём Мюллера на 300К слов. Представляете, на поиск каждого слова уходят минуты. А не 3 секунды, как сейчас. А в google translate вообще можно предложениями и абзацами переводить. Так что не аргумент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 11:28 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
Atum1Это не подвинет ,а подвиснет - опечатка :) Что из этого "подвинет"? - это "подвиснет" - или когда пул полностью задействует все свои потоки - он выбросит ошибку или будет выставлять новые задания в очередь , если конечно она предусмотрена реализацией ... Всё зависит от реализации executor-а. Можно задать любое нужное поведение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 11:29 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
Вот вопросы поведения как раз меня и интересуют , первое что сделал - перевел все в гуглтранслите. Но , провел тест - и понял что он работает последовательно - т.е. не начинает выполнять метод , а ждет завершения уже запущенного и после этого запускает его . Просто под линуксом - ставил задачку под крон - там все просто было - каждую минуту - он вызывал процедурку ... если за 1 минуту она не отрабатывала - запускался еще один экземпляр и так до бесконечности ... чтобы этого избежать приходилось создавать в tmp файл - и по нему ориентироваться , есть файл - процесс работает , нет - запускается новый и отрабатывает итд. тут думал будет аналогичное поведение, но кажется ошибся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 11:37 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
Разницу между Delay и Rate словарь не раскрывает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 11:38 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
BlazkowiczРазницу между Delay и Rate словарь не раскрывает? http://www.springbyexample.com.ua/2012/08/spring-task-scheduler.html Прочитал ,Blazkowicz, спасибо за помощь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 11:46 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAtum1Есть проблемы с английским языком :) Стыдно должно быть. Я в школе help по турбо паскалю читал со словарём Мюллера на 300К слов. Представляете, на поиск каждого слова уходят минуты. А не 3 секунды, как сейчас. А в google translate вообще можно предложениями и абзацами переводить. Так что не аргумент. Вот ведь были времена... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2013, 12:20 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
Вопрос : я создал задачу по расписанию ,но она отрабатывает дважды !!! как вернуть нормальное поведение ? ps при фиксит fixedRate такая же картинка ... кто вызывает задачу дважды ? spring 4.1.* проект сконфигурирован как javaconfig + jetty 9 Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. в логах вижу что отрабатывает два раза : Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2015, 14:16 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
собственно вот тест : 14:00:32.317 14:00:32.417 14:00:35.318 14:00:35.417 14:00:38.318 14:00:38.418 14:00:41.318 14:00:41.418 Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. вот pom.xml Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. Помогите решить проблему ! все что нашел Это ответ на http://stackoverflow.com/questions/19777879/quartz-spring-double-execution-on-startup Your ContextLoaderListener and DispatcherServlet are both loading the mvc-dispatcher-servlet.xml. Basically duplicating all your beans resulting in 2 executions as that is also duplicated. Split your configuration into one that is being loaded by the ContextLoaderListener (containing your services, dao, timers etc.) and one loaded by the DispatcherServlet (containing only web related beans controllers, view resovlers etc.). Or ditch the ContextLoaderListener altogether and only use the DispatcherServlet to load everything. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2015, 14:25 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
автор Увидел нужно написать так : Код: java 1. 2. 3. 4. тут вопрос , да все работает как часы - нет повторений , но getServletConfigClasses метод вроде как нужный?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2015, 14:39 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
Хм... такое ощущение будто ты создал 2 экземпляра ScheduledTasks. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2015, 14:40 |
|
||
|
Spring и Task Execution and Scheduling
|
|||
|---|---|---|---|
|
#18+
maytonХм... такое ощущение будто ты создал 2 экземпляра ScheduledTasks. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. в Этом случае в дебаге как раз и видно что они создаются дважды - в разных потоках и отрабатывают практически одновременно ... грабли на ровном месте ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2015, 15:07 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39034366&tid=2125021]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 493ms |

| 0 / 0 |
