1、现象描述
最近使用了一个新的上传文件的工具类,返回的图片和实际的人像不符合,怀疑出现了线程安全问题。
2、故障分析
通过日志观察发现,工具类返回的数据和实际人像不一致,怀疑工具类在多线程下的使用存在问题,决定分析工具类。
3、最终结果
最后发现,工具类中的上传文件方法都是静态方法,也引用了全局的静态变量,初始化是通过静态代码块实现的。
由于在多线程环境下静态方法访问了静态变量,但是没有加锁导致产生了数据安全问题。
4、解决方案
给每一个静态方法都增加一个同步锁synchronized。