作者:
embman (無尾熊)
2016-03-11 12:20:11請問一下:
我在server寫一個List,供應很多前端app client取資料,然後我固定半小時才去
資料庫更新一次這個List。這是個Restful API。
我會這樣做的原因是手機app client端有上萬個用戶,我不想每次拿資料都要進出
一趟資料庫,所以才想弄一個List在server本地端,每半小時再去資料庫更新一次
資料。
但我一直有一個疑問,當我去資料庫更新的時候,如果那一刻(秒),剛好有前端
Client來取資料,請問這時這個app會:
1.取到舊的資料
2.出錯,exception ?
EX:
in some class:
localList = getUpdatedDataFromDatabase();
剛好在做這個動作時,有client要拿資料,此時會怎麼樣?
要做什麼措施避免混亂?還是這個方法根本不好?
感謝!
作者:
haha02 (來人!上夾棍!)
2016-03-11 13:05:00新的list用另外建的然後整個換成新的instace就好 不要去修改舊的List的內容 這樣client頂多拿到舊的
作者:
embman (無尾熊)
2016-03-11 13:12:00感謝樓上大大的回覆!
作者:
LaPass (LaPass)
2016-03-11 14:37:00關鍵字「執行緒安全」主要還是要看你的程式碼怎麼寫這是一個超大的問題課題絕大多數是加個 synchronized 就可以解決掉的狀況
作者:
gmoz ( This can't do that. )
2016-03-11 17:36:00CopyOnWriteArrayList如果是用修改的話
我想你要做的是 in memory cache 吧?你要自己來嗎?還是透過第三方 java 函式庫?
作者:
yyc1217 (somo)
2016-03-12 17:42:00可以用 Collections.synchronizedList不過直接替換掉比較好就是了
作者: dou0228 (7777) 2016-03-13 22:02:00
自己用 List 不一定比較高效率喔...