|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
есть сервлет в нем вызывается метод A из из класса AA в методе А есть такое вывод сообщения вызов метода В из класса ВВ вывод сообщения метод В synchronized в методе В идёт работа с железом , работать может только один "метод", работа идёт 20сек если одновременно к сервлету обращаются 2 клиента то происходит следующее первому клиенту оправляется сообщение, вызывается метод В, отрабатывает, отправляется второе сообщение и только потом второму клиенту отправляется первое сообщение, ну и далее... всё отрабатывает правильно - с железом работают по очереди не конфликтуя. проблема в том , что пока не отрабоает первые клиент - второй не получает сообщение эти 20 сек, и он начинает сомневаться в работе системы как сделать так чтоб первое сообщение (с текстом "ждите") появилось сразу у всех клиентов, ну а обработка в методе В шла по очереди? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 18:47 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Это называется "критическая секция". Варианты - разные. Код: java 1. 2. 3.
Или Reentrant lock. Как в документации https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html Или есть еще вариант семафор. Для более сложной логики. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 18:51 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton, меня смущает то, что метод А получается заблокирован. может метод В вызывать отдельном потоке? но как синхронизировать методы В? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 18:56 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Попробуй нарисовать свой алгоритм в виде такой картики (по образу и подобию). Здесь например точки - это потоки. Кружочки - состояния. А прямоугольники - это барьеры (Locks, CriticalSections) которые либо делают форк новых потоков либо join с условием. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:15 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя методе В идёт работа с железом , ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:18 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя как сделать так чтоб первое сообщение (с текстом "ждите") появилось сразу у всех клиентов, ну а обработка в методе В шла по очереди? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:21 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя mayton, меня смущает то, что метод А получается заблокирован. может метод В вызывать отдельном потоке? но как синхронизировать методы В? Если убрать synchronized то что ломается? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:24 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя есть сервлет ... Код: java 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:27 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя чтоб первое сообщение (с текстом "ждите") появилось сразу у всех клиентов, Часики или прогрессбар или Ждите.... делают клиенты у себя. Сервер причем?) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:28 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton, начал и возник вопрос - клиенты обращаются к сервлету - для каждого клиента сервлет работает в отдельном потоке? сервлет вызывает метод А , этот метод доступен этому же сервлету другого клиента? чисто из логики метод А может запускаться параллельно - все данные только входные + обращение к базе. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:32 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp что именно ломается если одновременно? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:34 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя PetroNotC Sharp что именно ломается если одновременно? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:34 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя клиента сервлет работает в отдельном потоке? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:36 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя этот метод доступен этому же сервлету другого клиента? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:37 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя если одновременно к сервлету обращаются 2 клиента то происходит следующее первому клиенту оправляется сообщение, вызывается метод В, отрабатывает, отправляется второе сообщение и только потом второму клиенту отправляется первое сообщение мне одному не очевидно, почему так? У тебя метод А тоже синхронизирован? Или метод сервлета? Если нет, то метод сервлета и первое сообщение (я ж надеюсь оно асинхронное?) из А должно вызываться столько раз одновременно, сколько одновременных обращений, просто все кроме одного застрянут на вызове метода B и будут ждать входа. И причем тут критические секции я тоже не понял. По-моему тут речь об организации асинхронного обмена сообщениями с клиентами при наличии блокирующей очереди. Как раз таки задачка для твоих любимых вебсокетов (как пример, другое ж все равно не возмьешь) - передал уникальный id, поставил задачу в очередь - получил результат и отправил заказчику. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:37 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp в js таймер на 2 сек. Если не пришло то мессагу хотя в твоём упоминание js есть очень привлекательная мысль. но не решающая данную проблему....очень даже хорошая мысль.... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:37 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Ну или ранше времени выше flush написали. Или асинхронный сервлет или.... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:39 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя mayton, начал и возник вопрос - клиенты обращаются к сервлету - для каждого клиента сервлет работает в отдельном потоке? сервлет вызывает метод А , этот метод доступен этому же сервлету другого клиента? чисто из логики метод А может запускаться параллельно - все данные только входные + обращение к базе. Надо почитать спеку. По моему сервлет обладает из коробки идеальным параллелизмом. А ограничения уже ставят в него Tomcat/ и сами разрабы когда привязываеют его в БД коннекшенам пулам и прочее. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:39 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton, Пока он пример в коде не даст, будем гадать... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:43 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
сервлет работает с telegram, сообщения приходят из telegram, и туда же отправляются Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
chpasha У тебя метод А тоже синхронизирован? chpasha Или метод сервлета? chpasha из А должно вызываться столько раз одновременно, сколько одновременных обращений, просто все кроме одного застрянут на вызове метода B и будут ждать входа. И причем тут критические секции я тоже не понял. если б ws - было б по другому - проще или сложнее трудно сказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:46 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
грубо говоря - ответы идут не коннкшеном сервлета , а каждый раз новым, плохо это или хорошо - вопрос открытый, на данном этапе нужно просто заставить все работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:49 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
И код сюда. Нафиг нам требуху твою смотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:53 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя, Это метод setPostTelega()? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 19:56 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Пока он пример в коде не даст, будем гадать... стоит фильтр - рулится с подключениями - код "стандартный" дальше - сервлет doPost, получает данные от telegram в виде json - обработка, выделение нужного всё "стандартно" , по итогу вызов метода из класса А , в классе А методов несколько , вызываются в зависимости от обработки сообщения telegram. в методе А обрабатываются данные и по результатам обработки вызывается метод И из класса ВВ всё стандартно, если б не 20секунд... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:01 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
А сколько милисекунд это занимает? Код: java 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:01 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Это метод setPostTelega()? PetroNotC Sharp убери все в методы А и Б! И код сюда. Нафиг нам требуху твою смотреть это просто ответ на Basil A. Sidorov вадя есть сервлет ... Код: java 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:03 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton Код: java 1. 2.
прилонгполинге -около секунды. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:05 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton Код: java 1. 2.
прилонгполинге -около секунды. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:05 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя вот тут запутался. если сообщение 1 не приходит клиенту 2, когда метод Б работает, то где-то у тебя еще ошибка или заблуждение в интерпретации результатов. Может там в телеграме задержки, а ты думаешь что он окончания метода Б ждет. Ответ ищем простым логированием - сообщение до отсылки в телегу и после, до вызова метода Б и после. Стартуем 2 клиента и смотрим. Можно в виде теста организовать, вместо вызова метода Б с железом, просто sleep на 5-10 сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:06 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя это просто ответ на А нужно 3 или 4 строки с именами методов. ООП твоя слабая черта ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:14 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
На уровне дизайна выходит примерно так Все сообщения пришедшие по REST складываются в очередь один консьюмер обрабатывает очередь и через веб сокет дает сообщение клиенту: время ожидания и результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:15 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton Надо почитать спеку. По моему сервлет обладает из коробки идеальным параллелизмом. сделал логи - такое впечатление что сервлет вообще не обладает параллелизьмом :) сообщения от второго клиента появляются только после окончания обработки первого, т.е через 20 сек... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:27 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя сервлет вообще не обладает параллелизьмом :) А вот контейнер, при достаточной нагрузке запустит сервлет Б параллельно с А ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:31 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя, ну вот наверное в этом причина ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:33 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя через 20 сек ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:33 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Sergunka и через веб сокет дает сообщение клиенту: время ожидания и результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:34 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp sleep поставь и тестируй дал команду железу, только через 10 сек можно получить ответ, и таких взаимодействий с железом может быть 2-3 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:37 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp один сервлет конечно. А вот контейнер, при достаточной нагрузке запустит сервлет Б параллельно с А mayton вадя, ну вот наверное в этом причина ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:38 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя, Убрать железо из топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:39 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя PetroNotC Sharp один сервлет конечно. А вот контейнер, при достаточной нагрузке запустит сервлет Б параллельно с А mayton вадя, ну вот наверное в этом причина Проверить что сервлет обслуживается пулом из 1 потока? Ну поискать настройки контейнера. Или посмотреть на процесс через jvisualvm. Там на диаграмме потоков будет все видно. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 20:43 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Для Tomcat есть вот такая настройка maxThreads https://tomcat.apache.org/tomcat-7.0-doc/config/executor.html не уверен точно что она относится к сервлетам. Возможно смысл более широкий. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 22:13 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Для Jetty тоже что-то есть https://www.eclipse.org/jetty/documentation/current/#quick-start-configure ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 22:30 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton, видел, там явно больше 2 надо дальше разбираться с протоколом телеги ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2020, 23:36 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Да допустим их 20. Что они делают в момент когда воспроизводится проблема? Опять-же. JVisualVm, JStack: https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr016.html сделай дамп стека и посмотри чем они заняты. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 00:53 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя, С телегой все ясно. Код: java 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 08:30 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
тут наверно надо рассматривать иначе клиенты-смартфоны - это различные клиенты для сервера телеги а для моего сервера(сервлета) это один клиент - сама телега т.е. используется только один коннект. и если я в jsp сделаю команду sleep - браузер будет ждать пока не проснётся т.е у меня все работает правильно - вопрос надо ставить по- другому.... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 11:43 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя как сделать так чтоб первое сообщение (с текстом "ждите") появилось сразу у всех клиентов, ну а обработка в методе В шла по очереди? Чтобы обработка шла по очереди, нужна очередь! :-) Можно посмотреть в сторону RxJava и/или Spring WebFlux ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 12:07 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя тут наверно надо рассматривать иначе В железе, в сообщении или БЛ бизнес логики? Третья страница скоро. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 12:12 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя, Описывай ВИ или юзкейс. Посмотри в вебе как описывается. Мы не поняли. У нас нет телеги)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 12:14 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mad_nazgul, О да!)) Очереди, спрингбут, реактивное, асинхронное, jsp5.0, микросервисы, стримы! )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 12:17 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mad_nazgul, Главное чтобы пациент не запивал селедку молоком)) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 12:18 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
JSP 5.0 ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 12:26 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton JSP 5.0 ??? Но по фактам, асинхронность в сервлетах появмлась в 2009 году! Автор наверно еще не дошел до этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 12:37 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mad_nazgul Чтобы обработка шла по очереди, нужна очередь! :-) Аж с 2009 года в сервлетах. ConcurrentLinkedQueue ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 13:03 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Не знаю. Никогда не поддерживал щенячьей радости от async. Всегда программировать логику проще через синхронность. Ты имеешь результат в коде здесь и сейчас и в контексте. Я понимаю себе асинк как компромисс когда важна скорость. И там уже можно уродовать код в угоду мультиплексированию например. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 14:29 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
причем тут асинхронность? клиент открываете страницу - сервер начинает её готовить - если сервер готовит страницу час, то второе обращение от этого клиента встанет в очередь. и пока сервер не отдаст страницу клиент будет висеть. тут клиент всегда один телега. тут главное быстрее завершить сервлет. и единственный путь - метод В запустить в отдельном потоке. но как синхронизировать все методы В ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 14:49 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя тут клиент всегда один телега. Код когда будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:06 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя но как синхронизировать все методы В ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:07 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя тут клиент всегда один телега. Значит прогер вадя делает синхронизе и ставит всех к сайту в очередь. Круто))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:09 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя причем тут асинхронность? клиент открываете страницу - сервер начинает её готовить - если сервер готовит страницу час, то второе обращение от этого клиента встанет в очередь. и пока сервер не отдаст страницу клиент будет висеть. тут клиент всегда один телега. тут главное быстрее завершить сервлет. и единственный путь - метод В запустить в отдельном потоке. но как синхронизировать все методы В ? Я - честно честно не понимаю твоих проблем. Ситуацию с тем что сервер готовит страницу час - ты высосал из пальца. Что здесь еще можно добавить? Надо искать корень проблемы в оптимизации сервера. Как синхронизировать методы в Java - я знаю дохрена способов. Но как их синхронизировать конкретно в твоей ситуации я - ХЗ. Мне кажется тут просто неверно поставлена задача или мы оптимизируем не то и не там. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:15 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton, +1 ТС первый раз увидел задачу по IO. Когда файл парсится 3 минуты. Ну или оперДень закрывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:19 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Если на сервере job запускать надо. То запрос быстро возвращает jobId. И отпускает клиента. И дальше клиент может либо трекать статус джоба. Либо подписаться на пуши. Но клиента никто не блокирует на час или на сутки. За час и сокет закроется. Или ты перейдешь на другой wifi. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:39 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton Ситуацию с тем что сервер готовит страницу час - ты высосал из пальца. PetroNotC Sharp 4 телеги нельзя запустить что ли? PetroNotC Sharp ТС первый раз увидел задачу по IO. Когда файл парсится 3 минуты. Ну или оперДень закрывается. PetroNotC Sharp ГДЕ КОД? Код: 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.
вот этот метод Bot.DFL_control.DFL_set_IP выполняется до 20 сек. там программируется роутер - и ты хоть выпрыгни из трусов - не ускоришь. PetroNotC Sharp Значит прогер вадя делает синхронизе и ставит всех к сайту в очередь. ещё раз повторю - сервер телеги один - это не мой сервер, это сервер Дурова. и я с ним работаю по технологии "webhook" - как только для моего бота есть информация - он передаёт мне подключаясь к моему сервлету . адрес подключения я задаю , отправляя серверу телеги опредtлённый json. это равносильно тому что кто-то подключается к странице сайта. и пока сервлет не закончит работу , для данного клиента, второй запуск сервлета не возможен. другой клиент - другая сессия - пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:43 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя Код: java 1.
5 строчек вызова методов!!! Твой вопрос про архитектуру. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:46 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:49 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя как только для моего бота есть информация - он передаёт мне подключаясь к моему сервлету . doPostОтДурова() Неужели тяжело? Лень? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:51 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton Но клиента никто не блокирует на час или на сутки. За час и сокет закроется. Или ты перейдешь на другой wifi. или он отвалится по таймауту сам. эта ситуация аналогична текущей. вот и правильный вопрос как метод В запустить в отдельном потоке (синхронизировав между собой все запуски этого метода) и завершить работу сервлета (сессию). чтоб моно было обработать другой запрос от телеги ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:51 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя адрес подключения я задаю , отправляя серверу телеги опредtлённый json. ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:53 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя эта ситуация аналогична текущей. вот и правильный вопрос как метод В запустить в отдельном потоке (синхронизировав между собой все запуски этого метода) и завершить работу сервлета (сессию). чтоб моно было обработать другой запрос от телеги Тут телеги не ни у кого) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:54 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя и пока сервлет не закончит работу , ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:55 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя mayton Но клиента никто не блокирует на час или на сутки. За час и сокет закроется. Или ты перейдешь на другой wifi. или он отвалится по таймауту сам. эта ситуация аналогична текущей. вот и правильный вопрос как метод В запустить в отдельном потоке (синхронизировав между собой все запуски этого метода) и завершить работу сервлета (сессию). чтоб моно было обработать другой запрос от телеги Ты - синхронизируешь клиента? Бери BlockingQueue, или ThreadExecutor и накидывай заданий. Будет все исполнятся последовательно. При чем здесь сервлет - я вообще не понимаю. Сервлет - это сервер. А у тебя какая архитектура? 4-звенная? 5-Звенная? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:58 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя борьбы с перебором страниц ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 15:59 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Перебор страниц ... это конечно треш и угар. И непонятно почему так. Наверное не от хорошей жизни. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 16:05 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp 5 строчек вызова методов!!! Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Код: java 1. 2. 3. 4. 5. 6. 7.
Код: java 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 16:06 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя Код: java 1.
Это будет ВИ или юзкейсы ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 16:15 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton Перебор страниц ... это конечно треш и угар. И непонятно почему так. Наверное не от хорошей жизни. я просто через apache и rewrite сделал вывод такого обращения , для наглядности и оперативности , в свой бот - и наблюдал - как час/полтора с одного ip идёт перебор таких страниц ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 16:19 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp это можно не писать. Как и аннотации. Они для машины. А людям напиши коммент кто вызвает сервлет и зачем. Это будет ВИ или юзкейсы ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 16:20 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя названия страниц Вадя, этот ВИ оффтоп. Мы про БЛ толкуем. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 16:23 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя PetroNotC Sharp это можно не писать. Как и аннотации. Они для машины. А людям напиши коммент кто вызвает сервлет и зачем. Это будет ВИ или юзкейсы ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 16:24 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp А людям напиши коммент кто вызвает сервлет и зачем. он обращается по https doPost свой сервер может иметь доменное имя, а может и не иметь(обращение по ip c использованием самоподписанного сертификата)) зачем? апри вызове сервлета передаётся json с кучей всевозможных данных, таких json - вагон и маленькая тележка - на все случаи...из них надо вытянуть нужное и обработать.... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 16:33 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Ну тут надо сабмитить таску. Я очень коряво пишу но принцип как-то так. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 16:42 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя, В 6-ой раз прошу - комменты сделай в коде выше ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 16:56 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Одиночка программер это хуже некуда. Комменты ДЛЯ ЛЮДЕЙ ВОКРУГ не заставить! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 16:57 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Комменты ДЛЯ ЛЮДЕЙ ВОКРУГ не заставить! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 17:28 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя, Ты ТС. И это главное. Когдя я ТС, я пиво ношу, карандаши строгаю, и руки целую))) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 17:36 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton, вот такое Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
работает(т.е. java отрабатывает, что с железом - надо смотреть, но ошибок тоже не даёт) объясни почему в описаловке (что нашёл) почитал, о не понял ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 18:32 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
ЗЫ тут Код: java 1.
synchronized убрано ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 18:36 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя работает 1. Тоже самое есть в servlet 3.0 2. Клиент все равно ждет, только у сервера освободился поток для другого запроса. 3. Есть Flux который тоже самое.... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 18:44 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp а это ничего тебе не дает. Только серверу. PetroNotC Sharp 2. Клиент все равно ждет, только у сервера освободился поток для другого запроса. PetroNotC Sharp 3. Есть Flux который тоже самое.... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 18:53 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя, Без Future почему у тебя колом все встало? Проверил? Контейнер почему не создал на второй запрос новый поток? Не хочешь разбираться - не надо. Все работает - отлично! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 19:30 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Без Future почему у тебя колом все встало? Проверил? PetroNotC Sharp Контейнер почему не создал на второй запрос новый поток? где второй поток? в telegram? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 19:43 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя какой контейнер? какой поток? https://javarush.ru/groups/posts/2533-chastjh-6-konteynerih-servletov Часть 6. Контейнеры сервлетов ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 20:25 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Не ну я собственно понимал что технический уровень вади невысок, но иногда в спорах старался принимать его за компетентного но не имеющего опыта работы в команде дядьку. Чет этот топик вообще разочаровал. Ни с пулом разобраться не может, ни с тем как работают сервлеты, ни с очередью, да и с асинхронностью затык. Не говоря о том что человек future первый раз походу видит. Да даже отдебажить нормально походу не получается. В общем грусть-тоска. По- хорошему тут надо отвязывать этого телеграмм бота от сервлетов. Я бы делал так: Диаграмма компонентов - Контейнер сервлетов(http эндпоинт) -> крутящийся в вечном цикле сервис, который выгребает из очереди задания и вызывает телеграмм бота в отдельном потоке, а также складывает результат назад, но в другую очередь -> телеграм-бот Диаграмма взаимодействия - Клиент стучитсяна эндпоинт, этот контроллер кладет таску в очередь, возвращает клиенту айди таски для мониторинга. Этот таск выгребается срединным компонентом и отсылается в телеграмм бот. Когла таска закончена - кладет в выходную очередь. В то же время Клиент асинхронно стучит на второй эндпоинт с этим айди и либо получает результат(если таск закончен) либо пишет in progress. Что тут сложного хз, ну для программиста. Так-то отрицателям слоев в приложении и любителямхерачить из ресалтсета в System.out может быть тяжеловато. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 20:44 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp https://javarush.ru/groups/posts/2533-chastjh-6-konteynerih-servletov Часть 6. Контейнеры сервлетов первоначально я отправляю серверу telegram адрес своей станицы - адрес сервлета, с таким же успехом я могу послать и адрес страницы jsp. и он передаёт сервлету json методом POST. есть у него данные для меня -он подключился - образовалась сессия, пока эта сессия . пока сервлет не отработает - телеграм не может послать мне ничего. забыл ник По- хорошему тут надо отвязывать этого телеграмм бота от сервлетов. забыл ник Диаграмма взаимодействия - Клиент стучитсяна эндпоинт, этот контроллер кладет таску в очередь, возвращает клиенту айди таски для мониторинга. Этот таск выгребается срединным компонентом и отсылается в телеграмм бот. Когла таска закончена - кладет в выходную очередь. В то же время Клиент асинхронно стучит на второй эндпоинт с этим айди и либо получает результат(если таск закончен) либо пишет in progress. КЛИЕНТ - это приложение telegram - на смарфоне, десктопе, страница в браузере. КЛИЕН подключается только к серверу telegram, к моему серверу он никакого подключения не имеет. все сообщения передаются на сервер телеграм . и только потом сервер телеграм шлёт их моему серверу. сам бот - это по сути сервлет. в подавляющем случае когда никаких длительных обработок не требуется- возможностей сервлета выше крыши на 146% зачем что-то ещё городить? если есть стандартное? забыл ник Не ну я собственно понимал что технический уровень вади невысок поучились бы у mayton не пи...т, а предложил работающий вариант забыл ник Ни с пулом разобраться не может, ни с тем как работают сервлеты, ни с очередью поучились бы у mayton не пи...т, а спокойно разобрался , и в коде без комментариев и в вопросе, и в проблеме ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 21:45 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя ты вообще читаешь что пишу? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 21:48 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя поучились бы у mayton не пи...т, а предложил работающий вариант Пиши есчо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 21:50 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp нет. Без кода с комментом это тарабарщина белиберда. одно из требований у прогеров - разбираться в чужом коде - а ты не смог... что тебе было не понятно в 22246401 стандартный doPost? структура классов и методов? что из чего вызывается? или ты хотел предложить как сократить время работы с железом? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 21:54 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp он дал тебе рыбу. А мы удочку чтобы ты ее поймал сам. Пиши есчо. что тебе нужно было разжевать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 21:57 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp он дал тебе рыбу. если б ты не ..., а предложил ещё другой вариант - я б тебе сказалспасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 22:00 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя, Открой servlet 3.0 там тоже есть решение. С 2009 года и java 6 валяется. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 22:05 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя mayton, вот такое Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
работает(т.е. java отрабатывает, что с железом - надо смотреть, но ошибок тоже не даёт) объясни почему в описаловке (что нашёл) почитал, о не понял Тут ... понимаешь вопросы не ко мне а к тебе. Ты поставил в пул 3 конкурирующих потока. Это значит что 3 параллельных Update_id(obj) будут работать. К каким последствиям это приводит - ты должен ответить а не я. Я не знаю ограничений. Ставить методом тыка любые параметры - это как минимум непрофессионально. Ты до того должен объяснить сам себе что ты ОЖИДАЕШЬ в следстве такой архитектуры. И то что там ошибок не дает это не доказательство правоты. Мультипоточка вообще очень тяжело доказывается. Она даже модульными тестами ниразу не доказывается. Только в проде и только под нагрузкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 22:19 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Открой servlet 3.0 там тоже есть решение. С 2009 года и java 6 валяется. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 22:24 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Надо форкнуть тяпничный топик про асинхронные сервлеты. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 22:25 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton Тут ... понимаешь вопросы не ко мне а к тебе. Ты поставил в пул 3 конкурирующих потока. Это значит что 3 параллельных Update_id(obj) будут работать. К каким последствиям это приводит - ты должен ответить а не я. Я не знаю ограничений. Ставить методом тыка любые параметры - это как минимум непрофессионально. Ты до того должен объяснить сам себе что ты ОЖИДАЕШЬ в следстве такой архитектуры. И то что там ошибок не дает это не доказательство правоты. Мультипоточка вообще очень тяжело доказывается. Она даже модульными тестами ниразу не доказывается. Только в проде и только под нагрузкой. на данный момент 3 просто взято для тестов, если взять 1 а, запустить 2 обращения - будет ошибка. пока факт работы - подтверждает правильность пути - надо запускать в отдельных потоках. я ещё в начальных страницах предлагал вот этот метод Bot.DFL_control.DFL_set_IP(dfl_host, dfl_home_name, dfl_IPRuleFolder, mc[0]); запускать в отдельном потоке, т.е. не зависимо от того что там запущено организовывать новый поток и его там запускать. вот только вопрос был -как обеспечить синхронизацию этих методов между собой? если в одном потоке то синхронизация должна разлулить это сама? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 22:35 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
У фьючера есть методы isDone(), isCanceled(), и синхронный метод get() который блокируется до тех пор пока фьючерз не закончит работу и не вернет результат. https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html Вот с ними и синхронизируйся. А если тебе нужен глобальный счетчик - типа "есть ли хоть кто-то живой в потоках" - то посмотри в CoundDownLatch https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 22:44 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton топик про асинхронные сервлеты. если взять обыкновенный сайт - и два обыкновенных клиента обратятся к этому сервлету - они получат первое сообщение сразу, но будет проблема когда они обратятся к методу Bot.DFL_control.DFL_set_IP их надо ставить либо в очередь, либо как-то синхронизировать и есть ситуация когда это вариант и вариант с телеграм работают вместе метод Bot.DFL_control.DFL_set_IP может вызываться как выше показано так и из некоторых jsp страниц метод Bot.DFL_control.DFL_set_IP должен работать только в одном экземпляре в любой момент времени как лучше это организовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 22:46 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Мы - ходим по кругу. Мой самый первый совет - обернуть synchronized - был правильным. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 22:55 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
А асинк сервлеты - это уже не про твою душу. Это я - для себя и для форума предложил. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 22:56 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя PetroNotC Sharp Открой servlet 3.0 там тоже есть решение. С 2009 года и java 6 валяется. Ты и 20 страниц можешь тут тусить. До понедельника ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 23:03 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя метод Bot.DFL_control.DFL_set_IP должен работать только в одном экземпляре в любой момент времени 3* 30сек = 90 сек ждет третий клиент? Говорить глупости твоя профессия. Особенно когда метод в "экземпляре" ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 23:25 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Пятничный форк Async Servlets ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 00:19 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp для трех клиентов по очереди? 3* 30сек = 90 сек ждет третий клиент? Говорить глупости твоя профессия. Особенно когда метод в "экземпляре" не зная тонкости проблемы говорить всякую ерунду. железо - роутер. ему передаётся ip, и прочая инфа. и даётся команда - сохранить . "сохранить" это значит записать в пзу. процесс записи 15сек. и ты хоть что делай - пока пишется - новый процесс записи организовать не возможно. можно записывать данные для одного юзера, а можно и для 10 - только вопрос сколько ждать после прихода данных от первого юзера до прихода от второго? 1 секунду? 20? 5? чтоб их одновременно записать. тот вариант что работает - не устраивал тем, что второй юзер дал команду и не получает быстрого ответа (реакции) от системы (в отличии от того когда он был первым) и начинает волноваться, совершать не нужные действия - а реакция системы - ответ "ждите". вероятность таких обращений 1-2 в день и то не каждый. ели поставить вместо роутера севачок с iptebles - таких проблем не будет. но обслуживание системника и коробочки- разные вещи. так что: PetroNotC Sharp Говорить глупости твоя профессия. это относится к тебе. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 07:53 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя железо - роутер. ему передаётся ip, и прочая инфа. и даётся команда - сохранить . "сохранить" это значит записать в пзу. процесс записи 15сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 08:00 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Ну и в чём проблема выдать команду на смену конфигурации отдельно, а команду на запись изменённой конфигурации - отдельно? Вообще никак не завязываясь на запросы пользователей. вот с помощью запуска записи в отдельном потоке и получится - отдельно ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 11:15 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя передаёт свой ip, и ждёт setIP(myIP) ; //юзверь ждёт тут (где?) ответа (синхронного или асинхронного?) Вадя, не тупи. Пока не начнешь так писать тебя никто тут не понимает. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 12:56 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя железо - роутер. ему передаётся ip, и прочая инфа. и даётся команда - сохранить . "сохранить" это значит записать в пзу. процесс записи 15сек. и ты хоть что делай - пока пишется - новый процесс записи организовать не возможно. можно записывать данные для одного юзера, а можно и для 10 - только вопрос сколько ждать после прихода данных от первого юзера до прихода от второго? 1 секунду? 20? 5? чтоб их одновременно записать. тот вариант что работает - не устраивал тем, что второй юзер дал команду и не получает быстрого ответа (реакции) от системы (в отличии от того когда он был первым) и начинает волноваться, совершать не нужные действия - а реакция системы - ответ "ждите". вероятность таких обращений 1-2 в день и то не каждый. ели поставить вместо роутера севачок с iptebles - таких проблем не будет. но обслуживание системника и коробочки- разные вещи. так что: Тебя дураком обозвать? НУЖЕН КОД ИЗ МЕТОДОВ С КОММЕНТТАМИ. На методы можно вешать аннотации тогда. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 12:58 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя PetroNotC SharpГоворить глупости твоя профессия. это относится к тебе.ТС ,из 4 мемберов, тебя никто тут не понял. Включая меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 13:01 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Делаю за вадю юзкейс и постановку задачи. //сервис записи в роутер инфы о юзверях, Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 13:09 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Дальше что нужно вадя? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 13:10 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, ты вообще знаком как работает telegram? возьмём к примеру на смартфоне - это приложение оно подключено к серверу TELEGRAM, который находится хер знает где клиент - на смартфоне в приложении телеграм что-то набирает (возможны варианты -текс и команды, нас интересуют только команды, команда начинается с / ) и отправляет это сервере телеграм, это происходит в так называемом боте. ну и так далее.... сервер телеграм отправляет (переправляет) эти сообщения моему серверу - тут есть 2 варианта - вебхук и лонгполлинг для приема по вебхуку я использую сервлет. @WebServlet(name = "WebhookBot", urlPatterns = {"/pagebot"}) public class WebhookBot extends HttpServlet { Код: java 1. 2. 3. 4. 5. 6.
от сервера телеграм приходит много видов сообщений в doPost происходит частичная выборка информации эта информация передаётся в метод Update_id Б который находится в этом сервлете Код: java 1. 2. 3.
в методе Update_id происходит дальнейшая обработка и вызывается метод ip из класса IP Код: java 1. 2. 3. 4. 5. 6. 7.
в методе ip вызывается метод Bot.DFL_control.DFL_set_IP из соответствующего класса дак вот метод DFL_set_IP должен иметь монопольный доступ к железу, должен работать только один экземпляр этого метода в любое время - иначе железу будет плохо. сервер телеграм имеет доступ к моему серверу только в одной сессии . сообщения шлются по очереди. дальше разжёвывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 16:24 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
А где очередь? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 16:25 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, если тебе будет более понятно можно изобразить так Код: java 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 16:32 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton А где очередь? если метод DFL_set_IP синхронизирован - то они будет выполняться сам по очереди ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 16:35 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя mayton А где очередь? если метод DFL_set_IP синхронизирован - то они будет выполняться сам по очереди Для synchronized механизм FIFO не работает. Фактически можно утверждать что ожидающие потоки будут обслужены в рандомном порядке. Я просто акцентирую на этом внимание. Если нужна справедливая блокировка - тогда надо искать другие подходы. Например посмотреть на ReentrantLock и его конструктор. Там есть опция "справедливости" (fair lock). https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 16:40 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton Для synchronized механизм FIFO не работает. Фактически можно утверждать что ожидающие потоки будут обслужены в рандомном порядке. главное чтоб после отправки юзер получил ответ "ждать" как можно быстрее ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 16:45 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton, чисто теоретически я могу после окончания очередной записи в железо рассылать сообщения "вы 100-й в очереди....." ну или если за время записи придёт еще несколько - объединить их в одну "запись в железо" но пока такой интенсивности не предвидится ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 16:48 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Я все равно не понимаю что значит рассылать в терминах твоей архитектуры. Я не знаю API телеграм. Но из того что я прочитал уже - делаю предположение что это очень у~6ищный и неудобный API. И я рад что я занимаюсь back-end и бизнес-процессами и мне вобщем-то плевать на проблемы UI и веба. Моя психика здоровее. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 16:51 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton, пока твой вариант с 3 потоками имеет место к существованию. но лучше чтоб этой 3 не было... что-то более универсальное ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 16:53 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя ты вообще знаком как работает telegram? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:06 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
mayton Я не знаю API телеграм. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:07 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя PetroNotC Sharp, если тебе будет более понятно можно изобразить так Код: java 1. 2. 3. 4. 5. 6. 7. 8.
PetroNotC Sharp Делаю за вадю юзкейс и постановку задачи. //сервис записи в роутер инфы о юзверях, Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:10 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя если тебе будет более понятно вадя Код: java 1.
Крутые комментарии и имена методов dfm Пиши еще. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:14 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp тебе 5 раз твердят что мы тут не знаем и ждем от тебя это))))) PetroNotC Sharp а где это? Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:16 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя mayton А где очередь? если метод DFL_set_IP синхронизирован - то они будет выполняться сам по очереди ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:19 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя что конкретно нужно ещё? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:19 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Крутые комментарии и имена методов dfm Пиши еще. а зачем тебе голову морочить как я из кучи вариантов json выбираю нужную инфу? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:21 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя Код: java 1.
Пишем трлько setRouterInfoUsers ДОШЛО НАКОНЕЦ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:21 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя зачем тебе голову морочить setRouterInfoUsers ДОШЛО? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:23 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp То есть POST в очередь для 10 запросов? 150 сек последний десятый? вадя чисто теоретически я могу после окончания очередной записи в железо рассылать сообщения "вы 100-й в очереди....." ну или если за время записи придёт еще несколько - объединить их в одну "запись в железо" но пока такой интенсивности не предвидится PetroNotC Sharp мое тз подходит? чем твой вариант отличается от моего? который я несколько раз привел в различных видах? а где в твоем варианте синхронизация? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:24 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя а где в твоем варианте синхронизация? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:26 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя, Будем спорить по названиям? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:27 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp тогда забудь и не пиши DFL..... Пишем трлько setRouterInfoUsers ДОШЛО НАКОНЕЦ? если пришёл запрос от первого юзера - ждать когда придёт от второго? сколько ждать? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:27 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp после ТЗ понятного нам А НЕ ТЕБЕ ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:28 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp вадя, Будем спорить по названиям? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:31 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя PetroNotC Sharp после ТЗ понятного нам А НЕ ТЕБЕ Поехали дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:32 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Делаю за вадю юзкейс и постановку задачи. //сервис записи в роутер инфы о юзверях, Код: java 1.
22246795 Это ТЗ Запусти и скажи ошибку ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:35 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Потом запустить это в двух вариантах: - демка mayton - обычный серлет Код: java 1. 2. 3.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:42 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя, Работай! А то спорим две страницы про названия методов. Глупость какая. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:44 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
Ну и третья задача - разобраться и доложить, тип возврата метода setRouterInfoUsers( Если void, то это проще для фоновой задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:53 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, setRouterInfoUsers(listUsers); запускал - ошибки нет и по методу mayton ошибок нет ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:58 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Если void, то это проще для фоновой задачи. там же четко показано что void ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 17:59 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя, Крупицы знаний ты растворяешь болтовне! РАБОТАЙ! Я понял про void. Отлично! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 18:11 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вот такой вариант работает - меня устраивает Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
ну и далее Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 19:01 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя вот такой вариант работает - меня устраивает Тогда молодец. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 19:31 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp нагрузочный тест на N юзверей сделал? ну а в больших компаниях - другие условия, требования ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 19:44 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя, Странно почему у тебя НА ДВА КЛИЕНТА без Executors не заработало. Но я знаю, ты не любитель "докапываться до сути вещей". ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 19:49 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp вадя, Странно почему у тебя НА ДВА КЛИЕНТА без Executors не заработало. Но я знаю, ты не любитель "докапываться до сути вещей". у меня все работало. была проблема (повторюсь) при одновременной отправки команды - сообщение "ждать" появлялось у первого, а у второго только после завершения записи первого... т.е. реакция системы слишком долгая на действие юзера и не постоянная. вот всё из-за этого была проблема ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 20:34 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
вадя ты так и не научился читать Тут все четверо тебя не поняли. mayton на всякий случай кинул решение. Я лично просил показать логи. Не дождался. Закрывай топик. вадя сообщение "ждать" появлялось у первого ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 20:41 |
|
многопоточность...как лучше организовать?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp никто не понял как оно появляется вообще. одно из качеств хорошего прогера разбираться в чужом коде 22246365 но, видимо, это не про тебя.... и проблема описана в 22245740 авторпроблема в том , что пока не отрабоает первые клиент - второй не получает сообщение эти 20 сек, и он начинает сомневаться в работе системы как сделать так чтоб первое сообщение (с текстом "ждите") появилось сразу у всех клиентов, ну а обработка в методе В шла по очереди? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2020, 21:03 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120580]: |
0ms |
get settings: |
8ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
27ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
2450ms |
get tp. blocked users: |
0ms |
others: | 279ms |
total: | 2775ms |
0 / 0 |