powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / многопоточность...как лучше организовать?
160 сообщений из 160, показаны все 7 страниц
многопоточность...как лучше организовать?
    #40026517
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть сервлет
в нем вызывается метод A из из класса AA
в методе А есть такое
вывод сообщения
вызов метода В из класса ВВ
вывод сообщения

метод В synchronized
в методе В идёт работа с железом , работать может только один "метод", работа идёт 20сек

если одновременно к сервлету обращаются 2 клиента то происходит следующее
первому клиенту оправляется сообщение, вызывается метод В, отрабатывает, отправляется второе сообщение
и только потом второму клиенту отправляется первое сообщение, ну и далее...
всё отрабатывает правильно - с железом работают по очереди не конфликтуя.

проблема в том , что пока не отрабоает первые клиент - второй не получает сообщение эти 20 сек, и он начинает сомневаться в работе системы
как сделать так чтоб первое сообщение (с текстом "ждите") появилось сразу у всех клиентов, ну а обработка в методе В шла по очереди?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026518
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это называется "критическая секция".

Варианты - разные.

Код: java
1.
2.
3.
syncronized(object) {
   ....
}



Или Reentrant lock. Как в документации https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html

Или есть еще вариант семафор. Для более сложной логики.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026525
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

меня смущает то, что метод А получается заблокирован.
может метод В вызывать отдельном потоке?

но как синхронизировать методы В?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026534
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй нарисовать свой алгоритм в виде такой картики (по образу и подобию).
Здесь например точки - это потоки. Кружочки - состояния. А прямоугольники - это барьеры (Locks, CriticalSections) которые либо
делают форк новых потоков либо join с условием.

...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026535
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
методе В идёт работа с железом ,
что именно ломается если одновременно?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026537
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
как сделать так чтоб первое сообщение (с текстом "ждите") появилось сразу у всех клиентов, ну а обработка в методе В шла по очереди?
в js таймер на 2 сек. Если не пришло то мессагу
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026538
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton,

меня смущает то, что метод А получается заблокирован.
может метод В вызывать отдельном потоке?

но как синхронизировать методы В?
еще раз вопрос.
Если убрать synchronized то что ломается?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026540
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
есть сервлет ...
Код: java
1.
2.
3.
4.
вывод сообщения
flush();
вызов метода В из класса ВВ
вывод сообщения

?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026542
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
чтоб первое сообщение (с текстом "ждите") появилось сразу у всех клиентов,
странная у тебя логика
Часики или прогрессбар или Ждите.... делают клиенты у себя.
Сервер причем?)
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026544
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

начал и возник вопрос - клиенты обращаются к сервлету - для каждого клиента сервлет работает в отдельном потоке? сервлет вызывает метод А , этот метод доступен этому же сервлету другого клиента?
чисто из логики метод А может запускаться параллельно - все данные только входные + обращение к базе.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026545
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
что именно ломается если одновременно?
железо пишет что занято и не допускает изменения внутри себя
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026546
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp
что именно ломается если одновременно?
железо пишет что занято и не допускает изменения внутри себя
блин, ну подробнее напиши...
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026548
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
клиента сервлет работает в отдельном потоке?
есле не тормозить синхронизацией. Очевидно же
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026549
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
этот метод доступен этому же сервлету другого клиента?
да. Но отправка КЛИЕНТУ только в конце GET
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026551
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
если одновременно к сервлету обращаются 2 клиента то происходит следующее
первому клиенту оправляется сообщение, вызывается метод В, отрабатывает, отправляется второе сообщение
и только потом второму клиенту отправляется первое сообщение

мне одному не очевидно, почему так? У тебя метод А тоже синхронизирован? Или метод сервлета? Если нет, то метод сервлета и первое сообщение (я ж надеюсь оно асинхронное?) из А должно вызываться столько раз одновременно, сколько одновременных обращений, просто все кроме одного застрянут на вызове метода B и будут ждать входа. И причем тут критические секции я тоже не понял. По-моему тут речь об организации асинхронного обмена сообщениями с клиентами при наличии блокирующей очереди. Как раз таки задачка для твоих любимых вебсокетов (как пример, другое ж все равно не возмьешь) - передал уникальный id, поставил задачу в очередь - получил результат и отправил заказчику.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026552
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
в js таймер на 2 сек. Если не пришло то мессагу
это на js, это работа идёт через телеграм....

хотя в твоём упоминание js есть очень привлекательная мысль. но не решающая данную проблему....очень даже хорошая мысль....
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026553
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или ранше времени выше flush написали. Или асинхронный сервлет или....
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026554
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton,

начал и возник вопрос - клиенты обращаются к сервлету - для каждого клиента сервлет работает в отдельном потоке? сервлет вызывает метод А , этот метод доступен этому же сервлету другого клиента?
чисто из логики метод А может запускаться параллельно - все данные только входные + обращение к базе.

Надо почитать спеку. По моему сервлет обладает из коробки идеальным параллелизмом.
А ограничения уже ставят в него Tomcat/ и сами разрабы когда привязываеют его в БД коннекшенам пулам и прочее.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026558
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Пока он пример в коде не даст, будем гадать...
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026559
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сервлет работает с telegram, сообщения приходят из telegram, и туда же отправляются
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("POST");
            con.setRequestProperty("Content-Type", "application/json; utf-8");
            con.setRequestProperty("Accept", "application/json");
            con.setRequestProperty("Accept-Charset", "UTF-8");
            con.setDoOutput(true);
            OutputStream os = con.getOutputStream();
            byte[] input = message.getBytes("utf-8");
            os.write(input, 0, input.length);
            os.flush();


chpasha
У тебя метод А тоже синхронизирован?
нет, не сихронизирован
chpasha
Или метод сервлета?
нет, метод не сервлета
chpasha
из А должно вызываться столько раз одновременно, сколько одновременных обращений, просто все кроме одного застрянут на вызове метода B и будут ждать входа. И причем тут критические секции я тоже не понял.
вот тут запутался.
если б ws - было б по другому - проще или сложнее трудно сказать.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026562
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
грубо говоря - ответы идут не коннкшеном сервлета , а каждый раз новым, плохо это или хорошо - вопрос открытый, на данном этапе нужно просто заставить все работать.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026564
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("POST");
            con.setRequestProperty("Content-Type", "application/json; utf-8");
            con.setRequestProperty("Accept", "application/json");
            con.setRequestProperty("Accept-Charset", "UTF-8");
            con.setDoOutput(true);
            OutputStream os = con.getOutputStream();
            byte[] input = message.getBytes("utf-8");
            os.write(input, 0, input.length);
            os.flush();

убери все в методы А и Б!
И код сюда.
Нафиг нам требуху твою смотреть.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026566
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Это метод setPostTelega()?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026571
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Пока он пример в коде не даст, будем гадать...
всё под кошкой
стоит фильтр - рулится с подключениями - код "стандартный"
дальше - сервлет doPost, получает данные от telegram в виде json - обработка, выделение нужного
всё "стандартно" , по итогу вызов метода из класса А , в классе А методов несколько , вызываются в зависимости от обработки сообщения telegram.

в методе А обрабатываются данные и по результатам обработки вызывается метод И из класса ВВ
всё стандартно, если б не 20секунд...
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026572
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А сколько милисекунд это занимает?

Код: java
1.
2.
 os.write(input, 0, input.length);
 os.flush();
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026573
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Это метод setPostTelega()?
да

PetroNotC Sharp
убери все в методы А и Б!
И код сюда.
Нафиг нам требуху твою смотреть

это просто ответ на
Basil A. Sidorov
вадя
есть сервлет ...
Код: java
1.
2.
3.
4.
вывод сообщения
flush();
вызов метода В из класса ВВ
вывод сообщения


?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026574
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: java
1.
2.
 os.write(input, 0, input.length);
 os.flush();

мнгновенно :)
прилонгполинге -около секунды.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026575
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: java
1.
2.
 os.write(input, 0, input.length);
 os.flush();

мнгновенно :)
прилонгполинге -около секунды.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026577
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
вот тут запутался.

если сообщение 1 не приходит клиенту 2, когда метод Б работает, то где-то у тебя еще ошибка или заблуждение в интерпретации результатов. Может там в телеграме задержки, а ты думаешь что он окончания метода Б ждет. Ответ ищем простым логированием - сообщение до отсылки в телегу и после, до вызова метода Б и после. Стартуем 2 клиента и смотрим. Можно в виде теста организовать, вместо вызова метода Б с железом, просто sleep на 5-10 сек.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026585
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
это просто ответ на

А нужно 3 или 4 строки с именами методов.
ООП твоя слабая черта
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026586
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На уровне дизайна выходит примерно так

Все сообщения пришедшие по REST складываются в очередь один консьюмер обрабатывает очередь и через веб сокет дает сообщение клиенту: время ожидания и результат.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026588
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Надо почитать спеку. По моему сервлет обладает из коробки идеальным параллелизмом.

сделал логи - такое впечатление что сервлет вообще не обладает параллелизьмом :)
сообщения от второго клиента появляются только после окончания обработки первого, т.е через 20 сек...
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026591
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
сервлет вообще не обладает параллелизьмом :)
один сервлет конечно.
А вот контейнер, при достаточной нагрузке запустит сервлет Б параллельно с А
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026593
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя, ну вот наверное в этом причина
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026594
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
через 20 сек
sleep поставь и тестируй
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026595
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergunka
и через веб сокет дает сообщение клиенту: время ожидания и результат.
у телеги нет ws, он работает через webhook. грубо - у него на входе сервлет, который принимает post, и у меня должен быть сервлет , который принимfет POST, не факт, что он ждёт ответа на свой POST, в этой же сессии. хот\ на каждое сообщение от клиента он отвечает подтверждением
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026596
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
sleep поставь и тестируй
дак у меня sleep и стоит в методе В,
дал команду железу, только через 10 сек можно получить ответ, и таких взаимодействий с железом может быть 2-3
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026597
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
один сервлет конечно.
А вот контейнер, при достаточной нагрузке запустит сервлет Б параллельно с А

mayton
вадя, ну вот наверное в этом причина
как это подтвердить/проверить?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026599
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Убрать железо из топика.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026601
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp
один сервлет конечно.
А вот контейнер, при достаточной нагрузке запустит сервлет Б параллельно с А

mayton
вадя, ну вот наверное в этом причина
как это подтвердить/проверить?

Проверить что сервлет обслуживается пулом из 1 потока? Ну поискать настройки контейнера. Или посмотреть на процесс через jvisualvm. Там на диаграмме потоков будет все видно.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026618
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для Tomcat есть вот такая настройка maxThreads

https://tomcat.apache.org/tomcat-7.0-doc/config/executor.html

не уверен точно что она относится к сервлетам. Возможно смысл более широкий.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026621
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026637
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

видел, там явно больше 2
надо дальше разбираться с протоколом телеги
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026644
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да допустим их 20. Что они делают в момент когда воспроизводится проблема?
Опять-же. JVisualVm, JStack:

https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr016.html

сделай дамп стека и посмотри чем они заняты.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026679
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
С телегой все ясно.
Код: java
1.
2.
3.
4.
5.
doGetТвойСервлетАПИ() {
     ...
    s = setPOSTelegaSleep("вася") // 2 минуты
     return s
}
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026750
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут наверно надо рассматривать иначе
клиенты-смартфоны - это различные клиенты для сервера телеги
а для моего сервера(сервлета) это один клиент - сама телега

т.е. используется только один коннект.
и если я в jsp сделаю команду sleep - браузер будет ждать пока не проснётся

т.е у меня все работает правильно

- вопрос надо ставить по- другому....
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026756
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя

как сделать так чтоб первое сообщение (с текстом "ждите") появилось сразу у всех клиентов, ну а обработка в методе В шла по очереди?


Чтобы обработка шла по очереди, нужна очередь! :-)

Можно посмотреть в сторону RxJava

и/или

Spring WebFlux
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026757
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
тут наверно надо рассматривать иначе
давай, соображай быстрее в чем У ТЕБЯ проблема.
В железе, в сообщении или БЛ бизнес логики?
Третья страница скоро.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026758
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Описывай ВИ или юзкейс.
Посмотри в вебе как описывается.
Мы не поняли. У нас нет телеги))))
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026761
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,
О да!))
Очереди, спрингбут, реактивное, асинхронное, jsp5.0, микросервисы, стримы!
))))
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026763
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,
Главное чтобы пациент не запивал селедку молоком))
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026767
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JSP 5.0 ???
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026779
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
JSP 5.0 ???
аллегория конечно.
Но по фактам, асинхронность в сервлетах появмлась в 2009 году!
Автор наверно еще не дошел до этого.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026796
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
Чтобы обработка шла по очереди, нужна очередь! :-)
YES!
Аж с 2009 года в сервлетах.
ConcurrentLinkedQueue
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026837
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю. Никогда не поддерживал щенячьей радости от async. Всегда программировать
логику проще через синхронность. Ты имеешь результат в коде здесь и сейчас
и в контексте.

Я понимаю себе асинк как компромисс когда важна скорость. И там уже можно уродовать
код в угоду мультиплексированию например.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026843
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
причем тут асинхронность?
клиент открываете страницу - сервер начинает её готовить - если сервер готовит страницу час, то второе обращение от этого клиента встанет в очередь. и пока сервер не отдаст страницу клиент будет висеть.
тут клиент всегда один телега.

тут главное быстрее завершить сервлет.
и единственный путь - метод В запустить в отдельном потоке.
но как синхронизировать все методы В ?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026858
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
тут клиент всегда один телега.
4 телеги нельзя запустить что ли?
Код когда будет?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026859
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
но как синхронизировать все методы В ?
ГДЕ КОД?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026861
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
тут клиент всегда один телега.
сайт sql.ru всегда один.
Значит прогер вадя делает синхронизе и ставит всех к сайту в очередь.
Круто)))))
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026868
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
причем тут асинхронность?
клиент открываете страницу - сервер начинает её готовить - если сервер готовит страницу час, то второе обращение от этого клиента встанет в очередь. и пока сервер не отдаст страницу клиент будет висеть.
тут клиент всегда один телега.

тут главное быстрее завершить сервлет.
и единственный путь - метод В запустить в отдельном потоке.
но как синхронизировать все методы В ?

Я - честно честно не понимаю твоих проблем. Ситуацию с тем что сервер готовит страницу час - ты высосал из пальца.
Что здесь еще можно добавить? Надо искать корень проблемы в оптимизации сервера.

Как синхронизировать методы в Java - я знаю дохрена способов.
Но как их синхронизировать конкретно в твоей ситуации я - ХЗ.
Мне кажется тут просто неверно поставлена задача или мы оптимизируем
не то и не там.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026871
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
+1
ТС первый раз увидел задачу по IO. Когда файл парсится 3 минуты. Ну или оперДень закрывается.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026886
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если на сервере job запускать надо. То запрос быстро возвращает jobId.
И отпускает клиента. И дальше клиент может либо трекать статус джоба.
Либо подписаться на пуши. Но клиента никто не блокирует на час или на сутки.
За час и сокет закроется. Или ты перейдешь на другой wifi.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026890
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
        String formft = """
                  {\
                  "chat_id":%s,\
                  "text":"\
                  dfl_home_name           %s
                  dfl_host                %s
                  dfl_IPRuleFolder        %s
                  ip                      %s\
                  "}
                  """.formatted(chat_id, dfl_home_name, dfl_Home_ip, dfl_host, dfl_IPRuleFolder, mc[0]);
//        sendMessage(formft);
        System.out.println(formft);
        formft = """
                {\
                "chat_id":%s,\
                "text":"Ждите"\
    }
                """.formatted(chat_id);
        sendMessage(formft);
        Bot.DFL_control.DFL_set_IP(dfl_host, dfl_home_name, dfl_IPRuleFolder, mc[0]);
        formft = """
                {\
                "chat_id":%s,\
                "text":"IP разрешён
                 можно работать\n
                 не забудте отключить адрес после окончания работы"\
                }
                """.formatted(chat_id);
        sendMessage(formft);




вот этот метод Bot.DFL_control.DFL_set_IP выполняется до 20 сек.
там программируется роутер - и ты хоть выпрыгни из трусов - не ускоришь.

PetroNotC Sharp
Значит прогер вадя делает синхронизе и ставит всех к сайту в очередь.
в данном случае синхронизация нафиг не нужна.


ещё раз повторю - сервер телеги один - это не мой сервер, это сервер Дурова. и я с ним работаю по технологии "webhook" - как только для моего бота есть информация - он передаёт мне подключаясь к моему сервлету .
адрес подключения я задаю , отправляя серверу телеги опредtлённый json.
это равносильно тому что кто-то подключается к странице сайта.
и пока сервлет не закончит работу , для данного клиента, второй запуск сервлета не возможен.
другой клиент - другая сессия - пожалуйста.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026893
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Код: java
1.
String formft =

вадя джун. В 5ый раз прошу код БЛ из методов!
5 строчек вызова методов!!!
Твой вопрос про архитектуру.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026897
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
представляешь как работает бот телеги?
нет. Тут люди взрослые
22245803
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026900
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
как только для моего бота есть информация - он передаёт мне подключаясь к моему сервлету .
назови этот сервлет
doPostОтДурова()
Неужели тяжело?
Лень?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026901
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Но клиента никто не блокирует на час или на сутки.
За час и сокет закроется. Или ты перейдешь на другой wifi.
у меня работал алгоритм борьбы с перебором страниц - если идёт обращение к странице, которая запрещена или такой нет - то срабатывает переадресация на страницу , на которой есть команда слип - на несколько минут - на это время перебирающий просто ждёт когда ему отобразится Привет мир
или он отвалится по таймауту сам.

эта ситуация аналогична текущей. вот и правильный вопрос
как метод В запустить в отдельном потоке (синхронизировав между собой все запуски этого метода) и завершить работу сервлета (сессию). чтоб моно было обработать другой запрос от телеги
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026903
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
адрес подключения я задаю , отправляя серверу телеги опредtлённый json.
durov.setMyAddress()
?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026904
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
эта ситуация аналогична текущей. вот и правильный вопрос
как метод В запустить в отдельном потоке (синхронизировав между собой все запуски этого метода) и завершить работу сервлета (сессию). чтоб моно было обработать другой запрос от телеги
сначала ВИ.
Тут телеги не ни у кого)
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026905
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
и пока сервлет не закончит работу ,
какой из двух выше названных мной вместо тебя?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026906
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton
Но клиента никто не блокирует на час или на сутки.
За час и сокет закроется. Или ты перейдешь на другой wifi.
у меня работал алгоритм борьбы с перебором страниц - если идёт обращение к странице, которая запрещена или такой нет - то срабатывает переадресация на страницу , на которой есть команда слип - на несколько минут - на это время перебирающий просто ждёт когда ему отобразится Привет мир
или он отвалится по таймауту сам.

эта ситуация аналогична текущей. вот и правильный вопрос
как метод В запустить в отдельном потоке (синхронизировав между собой все запуски этого метода) и завершить работу сервлета (сессию). чтоб моно было обработать другой запрос от телеги

Ты - синхронизируешь клиента? Бери BlockingQueue, или ThreadExecutor и накидывай
заданий. Будет все исполнятся последовательно.

При чем здесь сервлет - я вообще не понимаю. Сервлет - это сервер. А у тебя какая архитектура? 4-звенная? 5-Звенная?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026907
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
борьбы с перебором страниц
?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026910
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перебор страниц ... это конечно треш и угар. И непонятно почему так. Наверное не от хорошей жизни.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026912
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
5 строчек вызова методов!!!


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@WebServlet(name = "WebhookBot", urlPatterns = {"/pagebot"})
public class WebhookBot extends HttpServlet {


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       Update_id(obj);


   }
    public static void Update_id(JSONObject obj) {

       ip(chat_id, data );
    }


}



Код: java
1.
2.
3.
4.
5.
6.
7.
public class IP {

    public static void ip(int chat_id, String data) {
           Bot.DFL_control.DFL_set_IP(dfl_host, dfl_home_name, dfl_IPRuleFolder, mc[0]);
   }

}




Код: java
1.
2.
3.
4.
5.
6.
7.
public class DFL_control {

    public static synchronized void DFL_set_IP(String DFL_host, String dfl_home_name, String dfl_IPRuleFolder, String IP) {
       тут долгая работа с железом
     }

}
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026916
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Код: java
1.
HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

это можно не писать. Как и аннотации. Они для машины. А людям напиши коммент кто вызвает сервлет и зачем.
Это будет ВИ или юзкейсы
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026918
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Перебор страниц ... это конечно треш и угар. И непонятно почему так. Наверное не от хорошей жизни.
кому-то надо, на хабре была на днях статейка как это делается - перебираются все возможные (известные) названия страниц - пытаются, а в большинстве случаев - находят . и делают с сервером что хотят.
я просто через apache и rewrite сделал вывод такого обращения , для наглядности и оперативности , в свой бот - и наблюдал - как час/полтора с одного ip идёт перебор таких страниц
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026919
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
это можно не писать. Как и аннотации. Они для машины. А людям напиши коммент кто вызвает сервлет и зачем.
Это будет ВИ или юзкейсы
копи-паст
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026925
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
названия страниц
я думал номера при пагинации))))
Вадя, этот ВИ оффтоп. Мы про БЛ толкуем.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026927
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp
это можно не писать. Как и аннотации. Они для машины. А людям напиши коммент кто вызвает сервлет и зачем.
Это будет ВИ или юзкейсы
копи-паст
выделил жирным.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026930
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
А людям напиши коммент кто вызвает сервлет и зачем.
сервлет вызывает сервер тедеграм, это сказано в определении метода работы webhook

он обращается по https doPost
свой сервер может иметь доменное имя, а может и не иметь(обращение по ip c использованием самоподписанного сертификата))

зачем?
апри вызове сервлета передаётся json с кучей всевозможных данных, таких json - вагон и маленькая тележка - на все случаи...из них надо вытянуть нужное и обработать....
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026934
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тут надо сабмитить таску. Я очень коряво пишу но принцип как-то так.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
@WebServlet(name = "WebhookBot", urlPatterns = {"/pagebot"})
public class WebhookBot extends HttpServlet {


    static ExecutorService executorService = Executors.newFixedThreadPool(1);
    static Map<String, Future<String>> map = ...

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       Future<String> future
       = executor.submit(new Callable<String>() {
         public String call() {
             return Update_id(obj);
         }});
   

   }

   // Получить статуч фьючерса
   protected String doGet(.....) {
        return map.get(....);
   }
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026943
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
В 6-ой раз прошу - комменты сделай в коде выше
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026946
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одиночка программер это хуже некуда.
Комменты ДЛЯ ЛЮДЕЙ ВОКРУГ не заставить!
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026964
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Комменты ДЛЯ ЛЮДЕЙ ВОКРУГ не заставить!
кто-тоговорил о чтении чухи кодов, но во в элементарных уж надо разбираться без коментов к каждой строке
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026970
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Ты ТС. И это главное.
Когдя я ТС, я пиво ношу, карандаши строгаю, и руки целую)))
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40026998
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

вот такое

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
static ExecutorService executor = Executors.newFixedThreadPool(3);

......

 case "update_id":

                    Future future = executor.submit((Callable<String>) () -> {
                        Update_id(obj);
                        return null;
                    });
//                    Update_id(obj);
                    break;



работает(т.е. java отрабатывает, что с железом - надо смотреть, но ошибок тоже не даёт)

объясни почему
в описаловке (что нашёл) почитал, о не понял
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027000
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ
тут
Код: java
1.
 public static synchronized void DFL_set_IP(String DFL_host, String dfl_home_name, String dfl_IPRuleFolder, String IP) {



synchronized убрано
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027003
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
работает
а это ничего тебе не дает. Только серверу.
1. Тоже самое есть в servlet 3.0
2. Клиент все равно ждет, только у сервера освободился поток для другого запроса.
3. Есть Flux который тоже самое....
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027007
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
а это ничего тебе не дает. Только серверу.
что не даёт мне и что даёт серверу(какому серверу)
PetroNotC Sharp
2. Клиент все равно ждет, только у сервера освободился поток для другого запроса.
какой клиент?
PetroNotC Sharp
3. Есть Flux который тоже самое....
тоже самое - это что?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027016
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Без Future почему у тебя колом все встало? Проверил?
Контейнер почему не создал на второй запрос новый поток?
Не хочешь разбираться - не надо.
Все работает - отлично!
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027019
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Без Future почему у тебя колом все встало? Проверил?
я уже несколько раз объяснил
PetroNotC Sharp
Контейнер почему не создал на второй запрос новый поток?
какой контейнер? какой поток?
где второй поток? в telegram?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027029
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
какой контейнер? какой поток?

https://javarush.ru/groups/posts/2533-chastjh-6-konteynerih-servletov
Часть 6. Контейнеры сервлетов
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027032
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не ну я собственно понимал что технический уровень вади невысок, но иногда в спорах старался принимать его за компетентного но не имеющего опыта работы в команде дядьку.
Чет этот топик вообще разочаровал.
Ни с пулом разобраться не может, ни с тем как работают сервлеты, ни с очередью, да и с асинхронностью затык. Не говоря о том что человек future первый раз походу видит. Да даже отдебажить нормально походу не получается. В общем грусть-тоска.

По- хорошему тут надо отвязывать этого телеграмм бота от сервлетов.

Я бы делал так: Диаграмма компонентов - Контейнер сервлетов(http эндпоинт) -> крутящийся в вечном цикле сервис, который выгребает из очереди задания и вызывает телеграмм бота в отдельном потоке, а также складывает результат назад, но в другую очередь -> телеграм-бот

Диаграмма взаимодействия - Клиент стучитсяна эндпоинт, этот контроллер кладет таску в очередь, возвращает клиенту айди таски для мониторинга. Этот таск выгребается срединным компонентом и отсылается в телеграмм бот. Когла таска закончена - кладет в выходную очередь. В то же время Клиент асинхронно стучит на второй эндпоинт с этим айди и либо получает результат(если таск закончен) либо пишет in progress.

Что тут сложного хз, ну для программиста. Так-то отрицателям слоев в приложении и любителямхерачить из ресалтсета в System.out может быть тяжеловато.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027046
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
https://javarush.ru/groups/posts/2533-chastjh-6-konteynerih-servletov
Часть 6. Контейнеры сервлетов
ты вообще читаешь что пишу?

первоначально я отправляю серверу telegram адрес своей станицы - адрес сервлета, с таким же успехом я могу послать и адрес страницы jsp.
и он передаёт сервлету json методом POST.
есть у него данные для меня -он подключился - образовалась сессия, пока эта сессия . пока сервлет не отработает - телеграм не может послать мне ничего.
забыл ник
По- хорошему тут надо отвязывать этого телеграмм бота от сервлетов.
есть такая либа, вот только у неё огромная проблема - у неё этот обработчик крутится отдельным потоком, и чтоб деплоить новую версию вара - надо перегрузить томкат или убить все процессы java.
забыл ник
Диаграмма взаимодействия - Клиент стучитсяна эндпоинт, этот контроллер кладет таску в очередь, возвращает клиенту айди таски для мониторинга. Этот таск выгребается срединным компонентом и отсылается в телеграмм бот. Когла таска закончена - кладет в выходную очередь. В то же время Клиент асинхронно стучит на второй эндпоинт с этим айди и либо получает результат(если таск закончен) либо пишет in progress.
ну если ты не знаешь как работает телега - зачем говоришь ерунду?
КЛИЕНТ - это приложение telegram - на смарфоне, десктопе, страница в браузере.
КЛИЕН подключается только к серверу telegram, к моему серверу он никакого подключения не имеет.
все сообщения передаются на сервер телеграм . и только потом сервер телеграм шлёт их моему серверу.

сам бот - это по сути сервлет.
в подавляющем случае когда никаких длительных обработок не требуется- возможностей сервлета выше крыши на 146%

зачем что-то ещё городить? если есть стандартное?
забыл ник
Не ну я собственно понимал что технический уровень вади невысок
вот по твоим высказываниям - это относится к тебе.
поучились бы у mayton не пи...т, а предложил работающий вариант
забыл ник
Ни с пулом разобраться не может, ни с тем как работают сервлеты, ни с очередью
4 страницы советовали не понятно что - и код подавай и и то ни сё и это не так
поучились бы у mayton не пи...т, а спокойно разобрался , и в коде без комментариев и в вопросе, и в проблеме
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027048
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
ты вообще читаешь что пишу?
нет. Без кода с комментом это тарабарщина белиберда.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027049
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
поучились бы у mayton не пи...т, а предложил работающий вариант
он дал тебе рыбу. А мы удочку чтобы ты ее поймал сам.
Пиши есчо.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027050
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
нет. Без кода с комментом это тарабарщина белиберда.
ну значит тебе до mayton ещё учиться и учиться. а раз не понятно - зачем лезешь?
одно из требований у прогеров - разбираться в чужом коде - а ты не смог...
что тебе было не понятно в 22246401 стандартный doPost?
структура классов и методов?
что из чего вызывается?
или ты хотел предложить как сократить время работы с железом?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027052
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
он дал тебе рыбу. А мы удочку чтобы ты ее поймал сам.
Пиши есчо.
ты задавал не нужные вопросы .
что тебе нужно было разжевать ?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027053
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
он дал тебе рыбу.
не рыбу, вариант решения .
если б ты не ..., а предложил ещё другой вариант - я б тебе сказалспасибо
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027054
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Открой servlet 3.0 там тоже есть решение. С 2009 года и java 6 валяется.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027056
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton,

вот такое

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
static ExecutorService executor = Executors.newFixedThreadPool(3);

......

 case "update_id":

                    Future future = executor.submit((Callable<String>) () -> {
                        Update_id(obj);
                        return null;
                    });
//                    Update_id(obj);
                    break;



работает(т.е. java отрабатывает, что с железом - надо смотреть, но ошибок тоже не даёт)

объясни почему
в описаловке (что нашёл) почитал, о не понял

Тут ... понимаешь вопросы не ко мне а к тебе. Ты поставил в пул 3 конкурирующих потока.
Это значит что 3 параллельных Update_id(obj) будут работать. К каким последствиям
это приводит - ты должен ответить а не я. Я не знаю ограничений.

Ставить методом тыка любые параметры - это как минимум непрофессионально. Ты до того
должен объяснить сам себе что ты ОЖИДАЕШЬ в следстве такой архитектуры.

И то что там ошибок не дает это не доказательство правоты. Мультипоточка вообще
очень тяжело доказывается. Она даже модульными тестами ниразу не доказывается.
Только в проде и только под нагрузкой.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027058
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Открой servlet 3.0 там тоже есть решение. С 2009 года и java 6 валяется.
давай покажи
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027059
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо форкнуть тяпничный топик про асинхронные сервлеты.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027060
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Тут ... понимаешь вопросы не ко мне а к тебе. Ты поставил в пул 3 конкурирующих потока.
Это значит что 3 параллельных Update_id(obj) будут работать. К каким последствиям
это приводит - ты должен ответить а не я. Я не знаю ограничений.

Ставить методом тыка любые параметры - это как минимум непрофессионально. Ты до того
должен объяснить сам себе что ты ОЖИДАЕШЬ в следстве такой архитектуры.

И то что там ошибок не дает это не доказательство правоты. Мультипоточка вообще
очень тяжело доказывается. Она даже модульными тестами ниразу не доказывается.
Только в проде и только под нагрузкой.
вообще то тут число потоков неизвестно.
на данный момент 3 просто взято для тестов, если взять 1 а, запустить 2 обращения - будет ошибка.

пока факт работы - подтверждает правильность пути - надо запускать в отдельных потоках.
я ещё в начальных страницах предлагал вот этот метод
Bot.DFL_control.DFL_set_IP(dfl_host, dfl_home_name, dfl_IPRuleFolder, mc[0]);
запускать в отдельном потоке, т.е. не зависимо от того что там запущено организовывать новый поток и его там запускать. вот только вопрос был -как обеспечить синхронизацию этих методов между собой?
если в одном потоке то синхронизация должна разлулить это сама?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027062
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У фьючера есть методы 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
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027063
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
топик про асинхронные сервлеты.
тут дело не в асинхронных сервлетах.

если взять обыкновенный сайт - и два обыкновенных клиента обратятся к этому сервлету - они получат первое сообщение сразу, но будет проблема когда они обратятся к методу Bot.DFL_control.DFL_set_IP

их надо ставить либо в очередь, либо как-то синхронизировать

и есть ситуация когда это вариант и вариант с телеграм работают вместе
метод Bot.DFL_control.DFL_set_IP может вызываться как выше показано так и из некоторых jsp страниц

метод Bot.DFL_control.DFL_set_IP должен работать только в одном экземпляре в любой момент времени

как лучше это организовать?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027064
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы - ходим по кругу. Мой самый первый совет - обернуть synchronized - был правильным.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027065
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А асинк сервлеты - это уже не про твою душу. Это я - для себя и для форума предложил.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027067
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp
Открой servlet 3.0 там тоже есть решение. С 2009 года и java 6 валяется.
давай покажи
щаз))) =
Ты и 20 страниц можешь тут тусить. До понедельника
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027072
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
метод Bot.DFL_control.DFL_set_IP должен работать только в одном экземпляре в любой момент времени
для трех клиентов по очереди?
3* 30сек = 90 сек ждет третий клиент?
Говорить глупости твоя профессия. Особенно когда метод в "экземпляре"
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027080
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пятничный форк Async Servlets
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027107
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
для трех клиентов по очереди?
3* 30сек = 90 сек ждет третий клиент?
Говорить глупости твоя профессия. Особенно когда метод в "экземпляре"
странный ты, видимо ты из тех кто "... не читал, но осуждаю..."
не зная тонкости проблемы говорить всякую ерунду.
железо - роутер. ему передаётся ip, и прочая инфа. и даётся команда - сохранить . "сохранить" это значит записать в пзу. процесс записи 15сек. и ты хоть что делай - пока пишется - новый процесс записи организовать не возможно. можно записывать данные для одного юзера, а можно и для 10 - только вопрос сколько ждать после прихода данных от первого юзера до прихода от второго? 1 секунду? 20? 5? чтоб их одновременно записать.
тот вариант что работает - не устраивал тем, что второй юзер дал команду и не получает быстрого ответа (реакции) от системы (в отличии от того когда он был первым) и начинает волноваться, совершать не нужные действия - а реакция системы - ответ "ждите".
вероятность таких обращений 1-2 в день и то не каждый.
ели поставить вместо роутера севачок с iptebles - таких проблем не будет. но обслуживание системника и коробочки- разные вещи.
так что:
PetroNotC Sharp
Говорить глупости твоя профессия.

это относится к тебе.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027108
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
железо - роутер. ему передаётся ip, и прочая инфа. и даётся команда - сохранить . "сохранить" это значит записать в пзу. процесс записи 15сек.
Ну и в чём проблема выдать команду на смену конфигурации отдельно, а команду на запись изменённой конфигурации - отдельно? Вообще никак не завязываясь на запросы пользователей.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027114
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Ну и в чём проблема выдать команду на смену конфигурации отдельно, а команду на запись изменённой конфигурации - отдельно? Вообще никак не завязываясь на запросы пользователей.
дело в том, что юзер в телеграм передаёт свой ip, и ждёт когда ему будет дано разрешение на подключение по rdp с этого ip.
вот с помощью запуска записи в отдельном потоке и получится - отдельно
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027119
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
передаёт свой ip, и ждёт
непередаваемая тупость не описать мемберам форума ЭТО в виде псевдокода или юзкейса или бл или ВИ.

setIP(myIP) ;
//юзверь ждёт тут (где?) ответа (синхронного или асинхронного?)

Вадя, не тупи. Пока не начнешь так писать тебя никто тут не понимает.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027120
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
железо - роутер. ему передаётся ip, и прочая инфа. и даётся команда - сохранить . "сохранить" это значит записать в пзу. процесс записи 15сек. и ты хоть что делай - пока пишется - новый процесс записи организовать не возможно. можно записывать данные для одного юзера, а можно и для 10 - только вопрос сколько ждать после прихода данных от первого юзера до прихода от второго? 1 секунду? 20? 5? чтоб их одновременно записать.
тот вариант что работает - не устраивал тем, что второй юзер дал команду и не получает быстрого ответа (реакции) от системы (в отличии от того когда он был первым) и начинает волноваться, совершать не нужные действия - а реакция системы - ответ "ждите".
вероятность таких обращений 1-2 в день и то не каждый.
ели поставить вместо роутера севачок с iptebles - таких проблем не будет. но обслуживание системника и коробочки- разные вещи.
так что:

Тебя дураком обозвать? НУЖЕН КОД ИЗ МЕТОДОВ С КОММЕНТТАМИ.
На методы можно вешать аннотации тогда.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027121
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC SharpГоворить глупости твоя профессия.

это относится к тебе.ТС ,из 4 мемберов, тебя никто тут не понял.
Включая меня.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027124
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю за вадю юзкейс и постановку задачи.
//сервис записи в роутер инфы о юзверях,

Код: java
1.
setRouterInfoUsers(listUsers);// 15s
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027125
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дальше что нужно вадя?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027154
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

ты вообще знаком как работает telegram?
возьмём к примеру на смартфоне - это приложение
оно подключено к серверу TELEGRAM, который находится хер знает где
клиент - на смартфоне в приложении телеграм что-то набирает (возможны варианты -текс и команды, нас интересуют только команды, команда начинается с / )
и отправляет это сервере телеграм, это происходит в так называемом боте.
ну и так далее....

сервер телеграм отправляет (переправляет) эти сообщения моему серверу - тут есть 2 варианта - вебхук и лонгполлинг
для приема по вебхуку я использую сервлет.
@WebServlet(name = "WebhookBot", urlPatterns = {"/pagebot"})
public class WebhookBot extends HttpServlet {


Код: java
1.
2.
3.
4.
5.
6.
 protected void doPost(HttpServletRequest request, HttpServletResponse response){

       Update_id(obj);


   }


от сервера телеграм приходит много видов сообщений в doPost происходит частичная выборка информации
эта информация передаётся в метод Update_id Б который находится в этом сервлете
Код: java
1.
2.
3.
    public static void Update_id(JSONObject obj) {
       ip(chat_id, data );
    }


в методе Update_id происходит дальнейшая обработка и вызывается
метод ip из класса IP
Код: java
1.
2.
3.
4.
5.
6.
7.
public class IP {

    public static void ip(int chat_id, String data) {
           Bot.DFL_control.DFL_set_IP(dfl_host, dfl_home_name, dfl_IPRuleFolder, mc[0]);
   }

}


в методе ip вызывается метод Bot.DFL_control.DFL_set_IP из соответствующего класса

дак вот метод DFL_set_IP должен иметь монопольный доступ к железу, должен работать только один экземпляр этого метода в любое время - иначе железу будет плохо.


сервер телеграм имеет доступ к моему серверу только в одной сессии . сообщения шлются по очереди.

дальше разжёвывать?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027155
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где очередь?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027158
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

если тебе будет более понятно можно изобразить так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
protected void doPost(HttpServletRequest request, HttpServletResponse response){

//тут хо хера обработки

       Bot.DFL_control.DFL_set_IP(dfl_host, dfl_home_name, dfl_IPRuleFolder, mc[0]);


   }
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027159
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А где очередь?
очереди как таковой не надо
если метод DFL_set_IP синхронизирован - то они будет выполняться сам по очереди
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027161
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton
А где очередь?
очереди как таковой не надо
если метод DFL_set_IP синхронизирован - то они будет выполняться сам по очереди

Для synchronized механизм FIFO не работает. Фактически можно утверждать
что ожидающие потоки будут обслужены в рандомном порядке.

Я просто акцентирую на этом внимание. Если нужна справедливая блокировка - тогда надо искать
другие подходы. Например посмотреть на ReentrantLock и его конструктор. Там есть опция
"справедливости" (fair lock).

https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027165
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Для synchronized механизм FIFO не работает. Фактически можно утверждать
что ожидающие потоки будут обслужены в рандомном порядке.
в данном случае это не страшно.
главное чтоб после отправки юзер получил ответ "ждать" как можно быстрее
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027167
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

чисто теоретически я могу после окончания очередной записи в железо рассылать сообщения "вы 100-й в очереди....."
ну или если за время записи придёт еще несколько - объединить их в одну "запись в железо"
но пока такой интенсивности не предвидится
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027168
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я все равно не понимаю что значит рассылать в терминах твоей архитектуры. Я не знаю API телеграм.
Но из того что я прочитал уже - делаю предположение что это очень у~6ищный и неудобный API.

И я рад что я занимаюсь back-end и бизнес-процессами и мне вобщем-то плевать на проблемы UI
и веба. Моя психика здоровее.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027172
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

пока твой вариант с 3 потоками имеет место к существованию. но лучше чтоб этой 3 не было...
что-то более универсальное
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027179
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
ты вообще знаком как работает telegram?
тебе 5 раз твердят что мы тут не знаем и ждем от тебя это)))))
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027180
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я не знаю API телеграм.
специально для вади
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027184
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp,

если тебе будет более понятно можно изобразить так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
protected void doPost(HttpServletRequest request, HttpServletResponse response){

//тут хо хера обработки

       Bot.DFL_control.DFL_set_IP(dfl_host, dfl_home_name, dfl_IPRuleFolder, mc[0]);


   }

а где это?

PetroNotC Sharp
Делаю за вадю юзкейс и постановку задачи.
//сервис записи в роутер инфы о юзверях,

Код: java
1.
setRouterInfoUsers(listUsers);// 15s

...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027187
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
если тебе будет более понятно

вадя
Код: java
1.
//тут хо хера обработки


Крутые комментарии и имена методов dfm
Пиши еще.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027188
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
тебе 5 раз твердят что мы тут не знаем и ждем от тебя это)))))
а я уже несколько раз объяснил, что конкретно нужно ещё?
PetroNotC Sharp
а где это?



Код: java
1.
setRouterInfoUsers(1юзер) === Bot.DFL_control.DFL_set_IP(dfl_host, dfl_home_name, dfl_IPRuleFolder, mc[0]);
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027189
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
mayton
А где очередь?
очереди как таковой не надо
если метод DFL_set_IP синхронизирован - то они будет выполняться сам по очереди
. То есть POST в очередь для 10 запросов? 150 сек последний десятый?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027191
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
что конкретно нужно ещё?
мое тз подходит?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027192
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Крутые комментарии и имена методов dfm
Пиши еще.
это не окончательный вариант, много что будет изменено - поэтому придумывать что-то с именами - нет смыла.
а зачем тебе голову морочить как я из кучи вариантов json выбираю нужную инфу?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027193
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Код: java
1.
setRouterInfoUsers(1юзер) === Bot.DFL_control.DFL_set_IP(dfl_host, dfl_home_name, dfl_IPRuleFolder, mc[0]);

тогда забудь и не пиши DFL.....
Пишем трлько setRouterInfoUsers
ДОШЛО НАКОНЕЦ?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027194
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
зачем тебе голову морочить
и я и mayton лучше понимаем это
setRouterInfoUsers
ДОШЛО?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027195
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
То есть POST в очередь для 10 запросов? 150 сек последний десятый?

вадя
чисто теоретически я могу после окончания очередной записи в железо рассылать сообщения "вы 100-й в очереди....."
ну или если за время записи придёт еще несколько - объединить их в одну "запись в железо"
но пока такой интенсивности не предвидится

PetroNotC Sharp
мое тз подходит?

чем твой вариант отличается от моего? который я несколько раз привел в различных видах?

а где в твоем варианте синхронизация?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027196
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
а где в твоем варианте синхронизация?
после ТЗ понятного нам А НЕ ТЕБЕ
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027197
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Будем спорить по названиям?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027198
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
тогда забудь и не пиши DFL.....
Пишем трлько setRouterInfoUsers
ДОШЛО НАКОНЕЦ?
вот до тебя не дошло, что как ни назови -будет метод ,который должен записать в железо
если пришёл запрос от первого юзера - ждать когда придёт от второго? сколько ждать?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027199
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
после ТЗ понятного нам А НЕ ТЕБЕ
ну если только так - пусть будет так, если тебе так понятнее, я могу разобраться и в твоём
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027200
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
вадя,
Будем спорить по названиям?
?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027201
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp
после ТЗ понятного нам А НЕ ТЕБЕ
ну если только так - пусть будет так, если тебе так понятнее, я могу разобраться и в твоём
+1
Поехали дальше.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027202
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Делаю за вадю юзкейс и постановку задачи.
//сервис записи в роутер инфы о юзверях,

Код: java
1.
setRouterInfoUsers(listUsers);// 15s



22246795
Это ТЗ
Запусти и скажи ошибку
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027203
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потом запустить это в двух вариантах:
- демка mayton
- обычный серлет
Код: java
1.
2.
3.
// loq.d(idThread);
setRouterInfoUsers(listUsers);// 15s внутри вывести idThread
// loq.d(idThread);


?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027204
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Работай!
А то спорим две страницы про названия методов. Глупость какая.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027207
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и третья задача
- разобраться и доложить, тип возврата метода
setRouterInfoUsers(
Если void, то это проще для фоновой задачи.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027209
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

setRouterInfoUsers(listUsers);
запускал - ошибки нет
и по методу mayton ошибок нет
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027210
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Если void, то это проще для фоновой задачи.
ну ты даёшь!!! ты мой код смотрел?
там же четко показано что void
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027212
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Крупицы знаний ты растворяешь болтовне!
РАБОТАЙ!
Я понял про void. Отлично!
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027476
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот такой вариант работает - меня устраивает
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
@WebServlet(name = "WebhookBot", urlPatterns = {"/pagebot"})
public class WebhookBot extends HttpServlet {

    static ExecutorService service = Executors.newCachedThreadPool();


 @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
.....
                case "update_id":

                    service.submit(() -> {
                        Update_id(obj);
                    });
                    break;
.....
}
}



ну и далее
Код: java
1.
public static synchronized void DFL_set_IP(){.....}
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027485
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
вот такой вариант работает - меня устраивает
нагрузочный тест на N юзверей сделал?
Тогда молодец.
Удачи!
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027490
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
нагрузочный тест на N юзверей сделал?
ну у меня только 2 смартфона - 2 клиента телеги. да и реальная нагрузка не планируется быть большой - это ж какая должна быть компания чтоб одновременно требовалось иметь нагрузку в N одновременно подключались...
ну а в больших компаниях - другие условия, требования
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027493
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Странно почему у тебя НА ДВА КЛИЕНТА без Executors не заработало.
Но я знаю, ты не любитель "докапываться до сути вещей".
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027501
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
вадя,
Странно почему у тебя НА ДВА КЛИЕНТА без Executors не заработало.
Но я знаю, ты не любитель "докапываться до сути вещей".
ты так и не научился читать
у меня все работало. была проблема (повторюсь) при одновременной отправки команды - сообщение "ждать" появлялось у первого, а у второго только после завершения записи первого...
т.е. реакция системы слишком долгая на действие юзера и не постоянная.
вот всё из-за этого была проблема
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027505
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
ты так и не научился читать
только я?
Тут все четверо тебя не поняли.
mayton на всякий случай кинул решение.
Я лично просил показать логи. Не дождался.
Закрывай топик.

вадя
сообщение "ждать" появлялось у первого
никто не понял как оно появляется вообще.
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027509
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
никто не понял как оно появляется вообще.

одно из качеств хорошего прогера разбираться в чужом коде
22246365
но, видимо, это не про тебя....

и проблема описана в 22245740
авторпроблема в том , что пока не отрабоает первые клиент - второй не получает сообщение эти 20 сек, и он начинает сомневаться в работе системы
как сделать так чтоб первое сообщение (с текстом "ждите") появилось сразу у всех клиентов, ну а обработка в методе В шла по очереди?
...
Рейтинг: 0 / 0
многопоточность...как лучше организовать?
    #40027514
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Я ему про то что жду логи. Он мне - разбирайся в чужом коде)) :)) LOL
Закругляйся. Пора спать.
...
Рейтинг: 0 / 0
160 сообщений из 160, показаны все 7 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / многопоточность...как лучше организовать?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]