需求:在BI的报表查询中,如果有多个用户同时查询报表,会使报表结果混乱,因为并发了。
解决:使用ThreadLocal。具体如下:
1.定义成员变量
private ThreadLocal<ReportBean> reportBeanLocal = new ThreadLocal<ReportBean>();
2.在报表查询前前,先初始化成员变量,切记要先remove(),否则会乱:
private void beforeSearch(){
reportBeanLocal.remove();
f (reportBeanLocal.get()==null) {
ReportBean totalColumn = new ReportBean();
reportBeanLocal.set(totalColumn);
}
}
3.通过reportBeanLocal.get().setDoorCount(1)的方式,可以往reportBeanLocal里的ReportBean设置值。
4.通过reportBeanLocal.get()的方法可以把reportBeanLocal里的ReportBean拿出来。
就是这样