Reading is not recommended anyway, but for your understanding:
A READ lock ensures that the state of the object will not be changed when it is committed, because a READ lock allows other transactions to update or delete them if, in the event Thread 1 makes some kind of change and then performs it, it first checks the state (version) of the object he checks, he is committed, if he is not allowed,
your understanding is so important.
there is also OPTIMISTIC_READ, which is a modern way of using it (_WRITE also exists).
UPDATE
Well, this article helped me understand that this helps.
engma source share