Ваш вопрос содержит ответ, более или менее. В любом случае, короткий ответ таков: это не будет иметь никакого значения в вашем случае с одним потребителем (возможно, с бесконечно малым снижением производительности).
Если вы установите флаг fair
в значение true, тогда, как вы вставили в свой вопрос, ожидающие потоки конкурируют в порядке FIFO для доступа. Это накладывает определенные ограничения на планирование ожидающих потоков относительно того, как они пробуждаются; недобросовестная система не имеет таких ограничений (и, следовательно, компилятор / среда выполнения могут делать вещи, которые могут работать немного быстрее).
Обратите внимание, что это влияет только на то, какой поток выбран для пробуждения из набора ожидающих потоков; и только с одним потоком, который когда-либо будет ждать, алгоритм решения не имеет значения, поскольку он всегда будет выбирать один и тот же поток. Различие возникает, когда у вас есть несколько потоков, ожидающих - допустимо ли для одного отдельного потока никогда ничего не получить из очереди, если другие потоки могут обрабатывать всю рабочую нагрузку между ними?