И действительно, я просто сам не понимал чего я хочу))) Ведь обработчиков может быть много: AI DB MOVE(xyz) и т.д и если они будут все доставать раз в тик из очереди пакет и проверять подходит он им или нет это будет как то глупо)) А вот тема с Executor которую вы предложили, вполне годная. Спасибо, посмотрев на готовые сервера я окончательно определился в том что я просто не понимал как решать данную задачу)
Хорошо, я понимаю что делать лишнюю обертку над protobuf слишком громоздко. Но я не понимаю как передать в логику разные классы. Ведь придти может и Login1PackageOuterClass(Protobuf) также и Get2RoomsOuterClass и как их передавать логике если к примеру BlockingQueue очередь имеет конструктор BlockingQueue
Делать обертку типа Package в которую записывать сокет пользователя, тип protobuf, сами данные протобаф и делать метод run который будет присваивать нужный тип и производить нужные операции с ним в логике. Про Executor не знал (я мало еще чего знаю) пытаюсь понять чем мне это поможет. Как я понимаю это просто много поточная замена моего While(true) в логике.