3

MessageDigestプロジェクトで md5 署名を計算するために使用しますが、パフォーマンス テスト中にArrayIndexOutOfBoundsException.

MessageDigestこれがシングルトンであり、スレッドセーフではないためであることを示唆する投稿をいくつか見つけました。MessageDigestこの問題を回避する方法、またはスレッドセーフな同等のクラスがあるかどうかを知っている人はいますか?

4

1 に答える 1

15

MessageDigestこれはシングルトンだからだと誰かが言う

それがあなたの MessageDigest目的でしょう。クラスそのものではありません。MessageDigest.getInstance()常に新しいインスタンスを返します。Javadoc を参照してください。

スレッドセーブではありません。

スレッドセーフ。

さて、誰もがこの問題を解決する方法を知っています

複数のスレッド間で MessageDigest インスタンスを共有しないでください。クラスメンバーにするのではなく、それを呼び出すメソッドのローカル変数にします。

于 2011-10-09T03:33:13.287 に答える