需求:
????同樣的任務(wù)唱歧,啟動(dòng)多次绳匀,多個(gè)異步任務(wù)(比如3個(gè))按照順序(A,B,C)分別啟動(dòng)投放,只保留最后一個(gè)任務(wù)的結(jié)果。
? ? 如果能保證只對(duì)最后一個(gè)啟動(dòng)的任務(wù)(C)的回調(diào)結(jié)果進(jìn)行處理,那么就能保證數(shù)據(jù)的準(zhǔn)確绒北。
? ? 但是不知道任務(wù)數(shù)量黎侈,如何確定最后一個(gè)呢?
解決方案:
????任務(wù)啟動(dòng)的時(shí)候闷游,生成一個(gè)UUID峻汉,更新任務(wù)全局的UUID,在回調(diào)結(jié)果中脐往,比較當(dāng)前任務(wù)的UUID和全局的UUID是否一致俱济,一致則執(zhí)行任務(wù),否則放棄執(zhí)行钙勃。
問題:
? ? 這個(gè)方案,只能保證聂喇,最后時(shí)刻(所有異步任務(wù)都執(zhí)行完成時(shí))辖源,最終的結(jié)果是最后一個(gè)任務(wù)的執(zhí)行結(jié)果蔚携。并不能保證中間任務(wù)(比如B)的回調(diào)不會(huì)被執(zhí)行,如果在中間任務(wù)被執(zhí)行了克饶,那么會(huì)出現(xiàn)數(shù)據(jù)不一致酝蜒,如果恰巧B執(zhí)行了,C的回調(diào)失敗了矾湃,那么數(shù)據(jù)也會(huì)錯(cuò)誤亡脑。