保證List物件的執行緒安全例子
阿新 • • 發佈:2018-12-11
因為擔心resetGuestApiList時,多執行緒讀取guestApiList時可能會不安全。所以加鎖限制了。其他地方只對guestApiList進行只讀操作,這樣guestApiList應該是安全的了。
public class PermissionsUtil { static ApiService apiService = new ApiService(); static final List<Api> guestApiList = Collections.synchronizedList(apiService.findByRoleId("guest")); public static List<Api> getGuestApiList() { return guestApiList; } /*** * 保證guestApiList的執行緒安全 * @param guestApiList */ public static void resetGuestApiList() { synchronized (guestApiList) { List<Api> list = apiService.findByRoleId("guest"); guestApiList.clear(); guestApiList.addAll(list); } } }