|
|
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Работаю с Spring Boot нужно разбиение книги на страницы BookReader.readDocFile readTxtFile выполнить в отдельном потоке. Как это реализовать ? Код: 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. 43. 44. 45. Как потоки в Java создаются знаю. Непонятно как выйти и вернуть результат из метода addBook. Если я запущу поток то поток отработает поздно а нужно выйти из метода addBook. Заранее спасибо за активность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2016, 19:14 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Andrey3k, джоин, не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2016, 19:16 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Join не решает ) При джойне сначала отработает BookReader потом вернется результат из метода addbook. Нужно наоборот чтобы метод addbook вернул результат раньше BookReader. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2016, 19:23 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Andrey3k, я видимо, сути не улавливаю тебе надо вернуть аддбук с какими то значениями, которые подготовятся параллельным тредом? но если ты адбук вернешь до того как результат треда появится то в чем суть? если надо вернуть результат треда - то или джойн или тупо лок. а если не надо - то и пофик. не понимаю сути проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2016, 20:19 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
а да, или вайт нотифай ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2016, 20:20 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Andrey3kнужно разбиение книги на страницы BookReader.readDocFile readTxtFile выполнить в отдельном потоке. Зачем. Andrey3kКак потоки в Java создаются знаю. Или думаете что знаете. Есть несколько причин на то чтобы не использовать new Thread() и ExecutorService в JEE и Spring контейнере. Andrey3kНепонятно как выйти и вернуть результат из метода addBook. Не понятно, что делать с результатом фоновой задачи после того как вы вернули отклик клиенту. Поэтому вы бы лучше не потоками заморачивались, а тем как клиент работает с вашим сервером. Andrey3kЕсли я запущу поток то поток отработает поздно а нужно выйти из метода addBook. Чиво? Новый поток чем мешает выйти из метода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 08:29 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Andrey3kПри джойне сначала отработает BookReader потом вернется результат из метода addbook. Нужно наоборот чтобы метод addbook вернул результат раньше BookReader. Странно. С одной стороны вы пишете, что знаете как создавать потоки. С другой стороны, на эту тему нет ни одной строки кода. Кстати, код вот такого вида Код: java 1. Это надругательство над Spring Framework. Это решение стало передовиком идей Dependency Injection IoC в Java и за ее пределами. А вы так сразу шашкой "нахрен нам бины", давайте использовать процедуры и статические методы глобальной видимости. Наиболее простым решением, мне кажется, будет рефакторинг BookReader в Bean и аннотирование его методов как @Async. Если спринг настроен полноценно, он поймет, что вы хотите вызов метода бина в фоновом потоке и сделает это за вас. К тому же это избавит вас от подвоных камней, связанных с созданием потоков самостоятельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 08:34 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAndrey3kПри джойне сначала отработает BookReader потом вернется результат из метода addbook. Нужно наоборот чтобы метод addbook вернул результат раньше BookReader. Странно. С одной стороны вы пишете, что знаете как создавать потоки. С другой стороны, на эту тему нет ни одной строки кода. Кстати, код вот такого вида Код: java 1. Это надругательство над Spring Framework. Это решение стало передовиком идей Dependency Injection IoC в Java и за ее пределами. А вы так сразу шашкой "нахрен нам бины", давайте использовать процедуры и статические методы глобальной видимости. Наиболее простым решением, мне кажется, будет рефакторинг BookReader в Bean и аннотирование его методов как @Async. Если спринг настроен полноценно, он поймет, что вы хотите вызов метода бина в фоновом потоке и сделает это за вас. К тому же это избавит вас от подвоных камней, связанных с созданием потоков самостоятельно. Спасибо за наводку и замечание. @Async я как раз таки не учел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 14:39 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
lor2Andrey3k, я видимо, сути не улавливаю тебе надо вернуть аддбук с какими то значениями, которые подготовятся параллельным тредом? но если ты адбук вернешь до того как результат треда появится то в чем суть? если надо вернуть результат треда - то или джойн или тупо лок. а если не надо - то и пофик. не понимаю сути проблемы. Я подумал и решил, что если метод addBook будет ждать пока BookReader подготовит результат, то этот вариант не будет рабочим. Нужно чтобы addBook завершил работу раньше BookReader Поэтому не нужно возвращать результат треда. Задача сводится к тому, чтобы просто запустить BookReader в отдельном потоке. Делается это потому что BookReader может долго разбивать книгу на страницы, а addBook должен отрабатывать сразу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 14:59 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Andrey3kЯ подумал и решил, что если метод addBook будет ждать ты в реальном контейнере тестировал? Если сервлетный контейнер, то никто никого ждать не будет. На новый запрос будет новый поток для addBook. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 15:10 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Andrey3kПоэтому не нужно возвращать результат треда. Да? А что тогда делать с переменной pages? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 15:17 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAndrey3kПоэтому не нужно возвращать результат треда. Да? А что тогда делать с переменной pages? Можно Код: java 1. 2. 3. сделать внутри потока где будет работать BookReader. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 15:20 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Andrey3k, и весь код выше тоже в этот поток, т.к. они ничего не делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 15:27 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Переписал код с использованием @Async методов. Код: 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. Код: 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. При запуске проекта ошибка: Код: java 1. 2. В чем может быть дело ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 17:33 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
@Autowired BookThread bookthread; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 18:14 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
JulT@Autowired BookThread bookthread; Пробовал не помогает. Вещает. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bookController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.andrey3k.book.BookThread com.andrey3k.springboot.controller.BookController.bookthread; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.andrey3k.book.BookThread] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 18:20 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Andrey3kВ чем может быть дело ? Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 19:05 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
chpashaAndrey3kВ чем может быть дело ? Код: plaintext 1. пошаговая отладка ниче не дает. Тут Nullpointer ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 19:35 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Andrey3kпошаговая отладка ниче не дает. Тут Nullpointer эвоно как ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 21:57 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Andrey3kПробовал не помогает. Как раз помогает и объясняет в чем именно проблема, что намного информативнее NPE. Че там спринговых конфигах? Классы прописаны или сканирование пакетов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 08:00 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAndrey3kПробовал не помогает. Как раз помогает и объясняет в чем именно проблема, что намного информативнее NPE. Че там спринговых конфигах? Классы прописаны или сканирование пакетов? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 10:26 |
|
||
|
Spring Boot Thread Example
|
|||
|---|---|---|---|
|
#18+
Andrey3kBlazkowiczпропущено... Как раз помогает и объясняет в чем именно проблема, что намного информативнее NPE. Че там спринговых конфигах? Классы прописаны или сканирование пакетов? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. @ComponentScan(basePackageClasses = ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 12:44 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39213498&tid=2124168]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 446ms |

| 0 / 0 |
