MessageDigest ArrayIndexOutOfBoundsException - PullRequest
2 голосов
/ 09 октября 2011

Я использую MessageDigest для вычисления подписи md5 в моем проекте, но во время теста производительности он выдает ArrayIndexOutOfBoundsException.

Я нашел несколько постов, которые предполагают, что это потому, что MessageDigest является одиночным и не безопасным для потоков. Кто-нибудь знает, как я могу обойти эту проблему, или если существует эквивалентный MessageDigest класс, который является потокобезопасным?

1 Ответ

13 голосов
/ 09 октября 2011

кто-то говорит, что это потому, что MessageDigest является синглтоном

Это будет ваш MessageDigest объект.Не сам класс.MessageDigest.getInstance() всегда возвращает новый экземпляр: см. Javadoc.

, а не сохранение потока.

Thread safe.

Теперь любой знает, как решить эту проблему

Не делитесь своим экземпляром MessageDigest между несколькими потоками.Даже не делайте его членом класса, делайте это локальной переменной в методах, которые его вызывают.

...