Нетто-каналы (или каналы NIO в целом) FIFO? или мне нужно реализовать FIFO самостоятельно, используя порядковые номера?Являются ли netty (или java NIO) каналами FIFO?
Благодаря
Нетто-каналы (или каналы NIO в целом) FIFO? или мне нужно реализовать FIFO самостоятельно, используя порядковые номера?Являются ли netty (или java NIO) каналами FIFO?
Благодаря
НИО поддерживает чтение и блокировка записи внутри; однако они реализованы с использованием блока synchronized
в NIO.
Нет НИКАКИЕ гарантии, что нить B получит блокировку после резьбы А при использовании synchronized
. Вполне возможно, что Thread C может получить блокировку записи перед тем Thread В.
Смотрите следующие на БЛокИРовкИ: Synchronized release order
Если вам нужно гарантированно FIFO через несколько потоков, то вам нужно создать ReentrantLock
с fair=true
и требуют все ваши потоки, чтобы сначала получить этот замок.
Что вы имеете в виду, что? –
Я имею в виду, если я посылаю сообщение A, B один за другим, я получаю их на стороне заказа канала по порядку? или мне нужно проверить его вручную, чтобы убедиться. –
Если вы отправляете запрос в тот же TCP-сокет, сервер получит их заказ. Было бы неплохо указать тип канала, который вы используете. –