机制分析ThreadLocalRandom"/>
从ThreadLocal内部机制分析ThreadLocalRandom
作者:禅与计算机程序设计艺术
1.简介
当需要在多线程环境下生成随机数时,我们经常会选择java.util.Random或者java.security.SecureRandom类。但是它们并不是线程安全的,这就导致了多线程环境下同一个Random对象会发生“伪随机”序列混乱的问题。在Java 5之前,解决这个问题的一个方案就是为每个线程都创建一个Random对象,但这样会使得资源消耗很高。而从Java 5开始引入了java.lang.ThreadLocal类,它提供了一种可以存储线程本地信息的方法。通过ThreadLocal类的实现,我们可以为每一个线程都绑定一个私有的Random对象,这样就保证了同一个线程生成的随机数序列都是不同的。ThreadLocal的作用主要是将不同线程的数据隔离开,防止数据泄露和数据污染,同时也使得线程之间的数据相互独立。ThreadLocalRandom是一个基于ThreadLocal类的线程安全的随机数生成器。本文将从ThreadLocal内部机制分析ThreadLocalRandom。
2.基本概念术语说明
首先,我们应该对Thread、ThreadLocal、ThreadLocalRandom三者的概念及其之间的关系有一个清晰的认识。
① Thread:线程(英语:thread)是操作系统能够进行运算调度和分派的最小单位,它被包含于进程之中并且独立于其他进程,可以共享该进程中的全部资源。因此,创建线程就是创建新的执行流,进而完成特定任务。每条线程都有自己独立的运行栈、寄存器集合和线程局部存储区,这些存储空间可以保存在内存中也可以保存在磁盘上。
② ThreadLocal:ThreadLocal类主要用来提供每个线程一个独立的局部变量空间,在某些情况下,这种空间是可以共享的
更多推荐
从ThreadLocal内部机制分析ThreadLocalRandom
发布评论