Guava的HashFunction线程安全吗?

时间:2019-01-08 02:55:58

标签: thread-safety guava

Guava库中的HashFunction是Threadsafe吗?

static HashFunction hashFunction = Hashing.sha256();

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

1 个答案:

答案 0 :(得分:2)

是的,如果您使用内置的HashFunction,它们是纯函数-请参阅documentation page for HashFunction

  

哈希函数是一种避免碰撞的纯函数,它映射   将任意数据块转换为称为哈希码的数字。

     

解开此定义:

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

请记住,由于HashFunction是一个接口,因此您可以 创建有状态且非线程安全的实现,但是这样做会违反合同。