很简单,一个实例可以javax.crypto.Cipher
(e.g. Cipher.getInstance("RSA")
)可以从多个线程中使用,或者我是否需要将多个线程粘在一个线程中ThreadLocal
(就我而言)?
不,不是。该实例是有状态的。因此,您需要将其存储在线程本地,或者在每次加密/解密调用时获取一个新实例,或者将其包装在synchronized(cipher)
block.
线程安全在 javadoc 中通常被称为“是线程安全的 https://www.google.com/search?q=%22is%20thread%20safe%22%20site:https://docs.oracle.com/en/java/javase" or "is not线程安全 https://www.google.com/search?q=%22is%20not%20thread%20safe%22%20site:https://docs.oracle.com/en/java/javase”。情况并非如此Cipher https://docs.oracle.com/en/java/javase/20/docs/api/java.base/javax/crypto/Cipher.html,所以你不应该假设它是线程安全的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)