В некоторых случаях может быть желательно, чтобы интерфейс только для чтения предоставлял метод AcquireReadLock, если для некоторых реализаций этого интерфейса может потребоваться блокировка. Неизменяемый объект, который реализует интерфейс, не обязательно должен был бы что-либо делать в ответ на запрос AcquireReadLock, но он должен был бы обеспечить по крайней мере реализацию-заглушку для этого метода; ожидается, что пользователи метода вызовут AcquireReadLock, прежде чем пытаться выполнить последовательность операций чтения, что может привести к нежелательным результатам, если какой-либо другой поток изменяет объект между ними (обратите внимание, что даже если объект не может быть изменен с использованием интерфейса только для чтения) существование интерфейса только для чтения не означает, что объект не будет видоизменяться другими способами). Кроме того, даже если объекту, не подлежащему изменению, не требуется блокировка, ему все равно может потребоваться опция «имитации» блокировки, чтобы подтвердить, что потребители объекта получают и снимают блокировку должным образом.