一種中心服務中同步狀態的方法

2021-07-13 12:20:52 字數 686 閱讀 3944

在客戶端中心化服務(單例)中,可能會多次進行同乙個耗時服務,比如說和服務端同步狀態。在進行同步時,如果有請求進來,理論上是不需要真正執行的,僅需要等待正在進行的請求。

其實是乙個時序的問題,如果請求發起比獲得結果要早,就可以直接使用結果。

那麼,中心服務中使用threadlocal儲存一下發起請求的時機,進入乙個鎖住的同步過程,同步過程後更新結果和結果時間即可。

threadlocal的釋放問題

public

class work

private threadlocalmrequesttime = new threadlocal<>();

private

int mresult;

private

long mresulttime;

public

void

dowork()

private synchronized void

realdo()

try catch (interruptedexception e)

mresult = new random(system.currenttimemillis()).nextint();

mresulttime = systemclock.uptimemillis();

}}

一種定時更新一組狀態的方法

定時更新一組狀態一般用於狀態機執行的判定條件 實現機制為 利用一硬體定時器作為時基,該時基選取適合狀態更新頻率,以該時基為累加週期,待累加週期變數值滿足各狀態更新週期時更新各狀態。具體實現為 以各狀態更新週期為物件,對累加週期變數取餘,以結果0為依據更新各狀態,累加週期變數清0依據為各狀態更新週期的...

iOS 通知中心 傳值的一種方法

nsnotification 通知中心傳值,可以跨越多個頁面傳值,一般也是從後面的頁面傳給前面的頁面。思路 第三個介面的值傳給第乙個介面。1.在第乙個介面建立乙個通知中心,通過通知中心,註冊乙個監聽事件 2.在第乙個介面中,設定接收到通知的事件。3.在第乙個介面中的dealloc中,將通知中心rem...

oracle 一種簡單的資料同步方式

在兩個oracle資料庫之間資料同步是乙個常見的需求,比如同乙個開發商開發了hr系統和其他各類業務系統,而各類業務系統如需共享hr人員資訊與及組織機構等基本資訊,可採用資料同步 當然不同的開發商的系統之間或者大型系統也可以開發webservice介面。基於spring框架還可以使用httpinvok...