首页 > 解决方案 > Guava 的 HashFunction 是线程安全的吗?

问题描述

Guava 库中的 HashFunction 是线程安全的吗?

static HashFunction hashFunction = Hashing.sha256();

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

标签: thread-safetyguava

解决方案


是的,如果您使用内置HashFunctions,它们是纯函数 - 请参阅文档页面HashFunction

哈希函数是一种避免冲突的纯函数,它将任意数据块映射到称为哈希码的数字。

解包这个定义:

  • (...)
  • 纯函数:产生的值必须仅取决于输入字节,按它们出现的顺序。输入数据永远不会被修改。 HashFunction实例应该始终是无状态的,因此是线程安全的

请记住,因为HashFunction它是一个接口,所以您可以创建有状态且非线程安全的实现,但它会违反合同。


推荐阅读