1. 程式人生 > >保證List物件的執行緒安全例子

保證List物件的執行緒安全例子

因為擔心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);
        }  
	}
}