| 
 | 
| 
 
многопоточность...как лучше организовать? 
 | 
|||
|---|---|---|---|
| 
 #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 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=59&msg=40027125&tid=2120580]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    2ms | 
check topic access:  | 
    2ms | 
track hit:  | 
    65ms | 
get topic data:  | 
    11ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    62ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 233ms | 
| total: | 403ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.