UserRanker is a shared object and accessed by multiple threads. Putting them in this transaction means if multiple users solve problems at the same time, only one of them can succeed. Is that correct?