保证List对象的线程安全例子

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaozaq/article/details/82797079

因为担心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);
        }  
	}
}

猜你喜欢

转载自blog.csdn.net/xiaozaq/article/details/82797079
今日推荐