Oracle Java KeyStore实现是否是线程安全的?

lai*_*ech 6 java

我正在寻求实现使用客户端证书身份验证的多线程SSL客户端,因此我需要为SSLContext提供KeyStore.我需要在多个线程上执行此操作.使用KeyStore的一个实例是否安全?我不会自己修改密钥库,我假设SSL实现也不需要,所以对象应该是有效的不可变的.

eri*_*son 3

一般来说,JCA 服务不是线程安全的,并且KeyStoreSpi不会对实现者强加任何线程安全要求。但是,如果您的密钥存储实际上是不可变的,并且您确保其初始化状态对所有线程都可见,则没有问题。例如,将 存储KeyStore在变量中volatile,或从类初始值设定项加载它(由于异常处理,这可能很棘手)。