Вам может не понравиться этот ответ.
Вы не используете правильную систему здесь. SharedPreferences предназначен для хранения простых настроек. То, что вы можете сделать это, не означает, что вы должны это делать. Вы в основном пытаетесь превратить SharedPreferences во что-то, чего нет. Вы можете добавить всю эту причудливую блокировку, но это не помешает кому-то войти в нее позже и случайно взорвать ее.
Если вы действительно нуждаетесь в этих функциях, вам следует обратить внимание только на использование sqlite напрямую. Нет никаких сомнений в том, что вы можете добавить синхронизацию в SharedPreferences (и я уверен, что она в некоторой степени безопасна, так как она уже разработана с использованием модели транзакции / принятия), но мне кажется, что изобретать колесо заново