是jBCrypt 0.3线程安全吗?

McG*_*Gin 1 java thread-safety

问题说的都是真的.代码可以在以下链接中找到 - > http://www.mindrot.org/projects/jBCrypt/

cem*_*ick 13

我强烈反对现有答案和目前接受的答案.

在简要回顾一下jBcrypt的源代码之后,我很满意它是线程安全的.创建的唯一实例不会转义键hashpw静态方法的范围,并且不会通过我可以看到的任何机制与其他任何实例共享其字段.

此外,我真的约由静态方法的API投诉混淆.散列函数是纯粹的,因此没有理由通过静态方法提供它们.我真的很高兴没有可用的用户空间访问实例方法,以免一些傻瓜尝试做一些聪明的事情(比如一遍又一遍地使用一个实例,"重置"它以最小化分配/ GC或一些这样的愚蠢).

  • @MatthewGilliard此代码中实际上没有可分解的单元; 它是哈希算法的一种实现.在这种情况下,"单位"由算法的边界定义,并且不小.即这是静态方法的完美应用.此外,引用的博客文章包含一些可疑的声明,但这是非常OT.:-) (2认同)
  • 如果在静态方法中使用算法的主接口,则很难测试使用散列的其他代码.这是测试框架的一个不幸的限制,但它确实意味着在实践中有人会将这些代码包装成他们可以模拟的东西 (2认同)