Guava库中的HashFunction是Threadsafe吗?
static HashFunction hashFunction = Hashing.sha256();
private static String getHashCredentials(String String) {
return hashFunction.newHasher()
.putString(String, Charsets.UTF_8).hash()
.toString();
}
答案 0 :(得分:2)
是的,如果您使用内置的HashFunction
,它们是纯函数-请参阅documentation page for HashFunction
:
哈希函数是一种避免碰撞的纯函数,它映射 将任意数据块转换为称为哈希码的数字。
解开此定义:
- (...)
- 纯函数:产生的值必须仅取决于输入字节(按它们出现的顺序)。输入数据永远不会被修改。
HashFunction
实例应始终为无状态,因此 线程安全。
请记住,由于HashFunction
是一个接口,因此您可以 创建有状态且非线程安全的实现,但是这样做会违反合同。