最近Androidのアプリ開発を始めた者です。
SharedPreferencesの読み込み・書き込みについて質問があります。
現在私が作成しているアプリでは2つのEventListener()を用いています。
普段は処理タイミングが重なることはないのですが、
ある条件化でほぼ同じタイミングに2つのEventListener()に通知が届きます。
EventListener()内の処理は以下のようなものです。

EventListener_A () {
1.calc()
2.DBに計算結果を格納
}

EventListener_B () {
1.処理
2.calc()
3.DBに計算結果を格納
}

public static void calc () {
1.SharedPreferencesから「計算用数値」の読み込み
2.計算処理(計算結果の算出、計算用数値の算出)
3.「計算用数値」をSharedPreferencesへ書き込み
4.計算結果をreturn
}

期待動作は、AもしくはBのイベント処理が終わってから他方のイベント処理が行われることなのですが、
ログを見ると「1.SharedPreferencesからの読み込み」でAとBが同じ計算用数値を読み込んでいました。

SharedPereferencesの書き込みが終わってから次のcalc()を行うためには
どのような手段を用いれば良いのでしょうか?

初歩的な質問かもしれませんが、よろしくお願い致します。