SecureRandom引发的线程阻塞问题分析,容器场景下只有单节点报错排查

  SecureRandom 是 Java 中用于生成高强度随机数的类,在密码学、安全通信等领域得到了广泛的应用。SecureRandom 生成的随机数具有高度的随机性和安全性,可以在密码学、密钥生成、加密解密等方面提供安全的支持。但是,在多线程环境下使用 SecureRandom 可能会存在线程阻塞的问题,因为 SecureRandom 对象的生成是基于系统熵池的,当多个线程同时访问 SecureRandom 对象时,可能会因为竞争熵池导致线程阻塞。 为了解决多线程环境下 SecureRandom 导致的线程阻塞问题,可以使用 ThreadLocal 对象来维护每个线程独立的 SecureRandom 对象,避免线程竞争和阻塞问题。具体步骤如下:

  1. 创建一个 SecureRandomHolder 类,使用 ThreadLocal 对象维护每个线程独立的 SecureRandom 对象。
public class SecureRandomHolder {
    private static final ThreadLocal<SecureRandom> THREAD_LOCAL = new ThreadLocal<SecureRandom>() {
        @Override
        protected SecureRandom initialValue() {
            SecureRandom sr = new SecureRandom();
            sr.nextBytes(new byte[20]);
            return sr;
        }
    };
    public static SecureRandom getSecureRandom() {
        return THREAD_LOCAL.get();
    }
}

  1. 在多线程环境下使用 Secu
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值