Я пишу Java-приложение, которое будет создавать экземпляры объектов класса для представления клиентов, которые подключились и зарегистрировались во внешней системе на другой стороне моего приложения.
В каждом клиентском объекте есть два вложенных класса, представляющих интерфейс и бэкэнд. интерфейсный класс будет непрерывно получать данные от реального клиента и отправлять указания и данные во внутренний класс, который будет принимать эти данные из интерфейсного модуля и отправлять их во внешнюю систему, используя надлежащий формат и протокол эта система требует.
В проекте мы стремимся к тому, чтобы каждый экземпляр объекта client был потоком. Тогда в каждом потоке, естественно, будет два сокета [EDIT] со своими собственными каналами NIO каждый [/ EDIT], один на стороне клиента, а другой на стороне системы, соответственно, на передней и задней частях. Однако теперь это приводит к необходимости неблокирующих сокетов. Я читал учебник здесь , в котором объясняется, как безопасно использовать селектор в вашем основном потоке для обработки всех потоков с подключениями.
Но мне нужны несколько селекторов, каждый из которых работает в своем собственном потоке. Прочитав вышеупомянутое руководство, я узнал, что наборы ключей в селекторе не являются потокобезопасными. Означает ли это, что отдельные селекторы, созданные в их собственных репрезентативных потоках, могут создавать конфликтующие ключи, если я попытаюсь дать им каждому по своей паре сокетов и каналов? Перемещение селектора вверх по основному потоку - небольшая возможность, но далеко не идеальная, исходя из требований к программному обеспечению, которые мне были даны. Спасибо за вашу помощь.