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