andyczy / czy-study-java-commons-utils

java工具类:Excel导入导出、时间操作、文件上传等工具类
114 stars 65 forks source link

ExcelUtils initialization的初始化方法 #4

Open zhangxuewei1263944101 opened 4 years ago

zhangxuewei1263944101 commented 4 years ago

我是在springboot的web项目中出现了这样的问题: 在多次导出A业务、B业务,会出现样式客串的问题(A业务的样式会窜到B业务的样式中去) 在看了ExcelUtils initialization的方法后发现作者的这个方法是不是有点问题 public static final ExcelUtils initialization() { ExcelUtils excelUtils = UTILS_THREAD_LOCAL.get(); if (excelUtils == null) { excelUtils = new ExcelUtils(); UTILS_THREAD_LOCAL.set(excelUtils); } return excelUtils; } UTILS_THREAD_LOCAL这个是ThreadLocal,ThreadLocal不是以线程当作key存储对象实例的吗? 如果是这样的话: 1、线程51:去处理业务A 2、线程51:处理完毕-空闲 3、线程51:去处理业务B 4、ThreadLocal get到了业务A的实例,不再new 将业务A的实例的样式给了业务B使用,导致了业务B样式混乱,

如果是这样的话我不知道这个ThreadLocal在这里起到了什么作用,=-=