Безопасен ли HavaFunction в Guava? - PullRequest
0 голосов
/ 08 января 2019

Является ли HashFunction в библиотеке Guava Threadsafe?

static HashFunction hashFunction = Hashing.sha256();

private static String getHashCredentials(String String) {
    return hashFunction.newHasher()
        .putString(String, Charsets.UTF_8).hash()
        .toString();
}

1 Ответ

0 голосов
/ 08 января 2019

Да, если вы используете встроенные HashFunction s, они являются чистой функцией - см. Страницу документации для HashFunction:

Хеш-функция - это предотвращающая столкновение чистая функция , которая отображает произвольный блок данных для числа, называемого хеш-кодом.

Распаковка этого определения:

  • (...)
  • pure function: создаваемое значение должно зависеть только от входных байтов в порядке их появления. Входные данные никогда не изменяются. HashFunction экземпляры всегда должны быть без состояний, и поэтому потокобезопасный .

Имейте в виду, что, поскольку HashFunction является интерфейсом, вы можете создать реализацию с сохранением состояния и не ориентированную на многопотоковую реализацию, но это нарушит контракт.

...