Как каждому новому подключившемуся пользователю назначить отдельный поток?
Добрый день, стоит задача каждому новому подключенному клиенту выделить свой поток обработки данных , при повторных запросах все данные кидать в этот поток.Когда данные будут обработаны, а новые не придут поток завершится. Подскажите как это можно реализовать??Пытался создать карту и для каждого нового пользователя делать пару id-thread,но в итоге обработкой всех подключений все равно занимается один поток.
Сергей Горностаев: Данные приходят с клиента telegram, в потоке они будут висеть некоторое время (условно 15 минут), и если в течение 15 минут этот клиент больше не отправит никаких данных, то поток должен уничтожиться.
ingush: Нет,вы не так поняли,клиенты отсылают серверу строку, и в потоке(для каждого клиента свой поток) строка будет проверяться на наличие такой же в листе(куда в свое время будут подгружаться строки), и пока в листе не будет строки идентичной той , что пришла от клиента поток будет работать, в то же время клиент может отослать серверу еще одну строку, которая тоже будет проверяться вместе с первой, когда в потоке не будет строк для проверки поток завершится .
Из контроллера можно выполнять асинхронные методы сервисов. В Spring такие методы помечаются аннотацией @Async. Реквест будет завершен, а выполнение задания продолжиться.
Для изменения задания можно использовать какую-нибудь очередь или задействовать систему событий. см. ApplicationEvent.