thread-safety - 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();
}
解决方案
是的,如果您使用内置HashFunction
s,它们是纯函数 - 请参阅文档页面HashFunction
:
哈希函数是一种避免冲突的纯函数,它将任意数据块映射到称为哈希码的数字。
解包这个定义:
- (...)
- 纯函数:产生的值必须仅取决于输入字节,按它们出现的顺序。输入数据永远不会被修改。
HashFunction
实例应该始终是无状态的,因此是线程安全的。
请记住,因为HashFunction
它是一个接口,所以您可以创建有状态且非线程安全的实现,但它会违反合同。
推荐阅读
- c++ - 无法从 glReadpixels 创建 HBITMAP
- birt - 如何提取仅提供缺陷计数的非常简单的 sourceanalyzer / fortify 报告?
- sql - 您如何找到部署 rdl 文件的 .sln 报告文件(仅在服务器上有部署的文件)
- python - 在单个 GPU 上训练多个模型 - Keras
- python - 无法在 Python/Django 应用程序上运行测试
- r - 使用 tidyR 制作列
- javascript - dojo 模块将 .min.js 附加到模块请求
- java - 每个 xml 标记上的 JAXB 命名空间
- postgresql - 如何检查 psql 查询的性能
- python - Python3 导入失败