最近在写一个项目,在controller层中有一个变量public static List<String>list;
有一个接口是给前端返回这个变量值,有一个定时任务是定时更新这个值。
我应该怎么做才能保证更新的时候读取这个变量不出错?
注:这个接口是高频接口,不能每个人进来都加锁获取list,定时任务是几分钟跑一次。
目前已经想到的,更新的时候先新建一个新的变量newList,数据都放到newList中,最后让list指向newList,即list=newList,但不确定对象的赋值是否线程安全,即在赋值语句执行过程中,如果读取了list,会不会有异常情况?
题主的场景,使用线程安全的List不就可以了?java.util.concurrent.CopyOnWriteArrayList<E>