我在项目中使用
MessageDigest
来计算md5签名,但在性能测试期间它抛出了ArrayIndexOutOfBoundsException
。
我发现一些帖子表明这是因为
MessageDigest
是单例且不是线程安全的。有谁知道我如何解决这个问题,或者是否有一个等效的线程安全的MessageDigest
类?
有人说这是因为
是单例MessageDigest
那将是你的
MessageDigest
对象。不是班级本身。 MessageDigest.getInstance()
始终返回一个新实例:请参阅 Javadoc。
而不是线程保存。
线程安全。
现在,任何人都知道如何解决这个问题
不要在多个线程之间共享您的
MessageDigest
实例。甚至不要将其设为类成员:将其设为调用它的方法中的局部变量。