Нет, вы все равно должны блокироваться вокруг каждого Peek()
вызова.
Поскольку Queue внутренне использует массив, его методы экземпляра не являются поточно-ориентированными, поскольку массив может быть изменен другим потоком в любое время.
Peek()
также проверяет длину очереди, чтобы увидеть, есть ли элементы в очереди, прежде чем возвращать фактическое значение, и какой-то другой поток может удалить эти элементы, прежде чем метод фактически вернет эти значения.