java并发包中的ThreadLocalRandom类,jdk1.7增加的随机数生成器

Random类的缺点:是多个线程使用同一个原子性的种子变量,导致对原子变量的更新产生竞争,降低了效率(该类是线程安全的,但是多线程环境下操作统一实例时,会有效率问题,jdk1.7之后可以使用ThreadLocalRandom类,1.7之前保证多个线程都有一个自己的Random实例即可)

    protected int next(int bits) {long oldseed, nextseed;// 所谓的种子,即seed原子变量,使用compareAndSet比较修改方式,在多线程环境下,多个线程调用nextInt是会产生竞争,导致效率不高AtomicLong seed = this.seed;do {oldseed = seed.get();nextseed = (oldseed * multiplier + addend) & mask;} while (!seed.compareAndSet(oldseed, nextseed));return (int)(nextseed >>> (48 - bits));}

ThreadLocalRandom的流成类似ThreadLocal,都算是一个工具类,使每一个线程内都有一个自己的副本。

java并发编程之美-阅读记录3相关推荐

  1. java并发编程之美-阅读记录1

    1.1什么是线程? 在理解线程之前先要明白什么是进程,因为线程是进程中的一个实体.(线程是不会独立存在的) 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是进程中的 ...

  2. java并发编程之美-阅读记录11

    java并发编程实践 11.1ArrayBlockingQueue的使用 有关logback异步日志打印中的ArrayBlockingQueue的使用 1.异步日志打印模型概述 在高并发.高流量并且响 ...

  3. java并发编程之美-阅读记录2

    2.1什么是多线程并发编程 并发:是指在同一时间段内,多个任务同时在执行,并且执行没有结束(同一时间段又包括多个单位时间,也就是说一个cpu执行多个任务) 并行:是指在单位时间内多个任务在同时执行(也 ...

  4. java并发编程之美-阅读记录10

    同步器 10.1CountDownLatch 在开发过程中经常会遇到在主线程中开启多个子线程去并行执行任务,并且主线程需要等待子线程执行完毕后在进行汇总.在CountDownLatch出现之前使用线程 ...

  5. java并发编程之美-阅读记录7

    java并发包中的并发队列 7.1ConcurrentLinkedQueue 线程安全的无界非阻塞队列(非阻塞队列使用CAS非阻塞算法实现),其底层数组使用单向列表实现,对于出队和入队操作使用CAS非 ...

  6. java并发编程之美-阅读记录6

    java并发包中锁 6.1LockSupport工具类 该类的主要作用就是挂起和唤醒线程,该工具类是创建锁和其他工具类的基础.LockSupport类与每个使用他的线程都关联一个许可证,在默认情况下调 ...

  7. java并发编程之美-阅读记录5

    java并发包中的并发List 5.1CopeOnWriteArrayList 并发包中的并发List只有CopyOnWriteArrayList,该类是一个线程安全的arraylist,对其进行的修 ...

  8. java并发编程之美-阅读记录4

    java并发包中的原子操作类,这些类都是基于非阻塞算法CAS实现的. 4.1原子变量操作类 AtomicInteger/AtomicLong/AtomicBoolean等原子操作类 AtomicLon ...

  9. 《Java并发编程之美》阅读笔记

    简介 最近在阅读<Java并发编程之美>这本书,为了督促自己啃完这本书,计划每读完一章写一篇阅读笔记,供以后参考. 笔记列表 第一部分 Java并发编程基础篇 第1章 并发编程线程基础 第 ...

最新文章

  1. 列表CheckBox全选 结合DataGrid 进行删除操作
  2. cmake 注意事项
  3. 介绍一个好用的抓取dump的工具-ProcDump
  4. 齐二TK6916/20/26/32系列数控落地铣镗床简介8
  5. ORACLE基础知识
  6. 维基百科---似然函数
  7. 图解:sap中的账户确定(账户决定或者科目确定)如何实现如总账的集成
  8. GNU make manual 翻译(六十三)
  9. js 双引号一行两行_一行注释也能影响运行结果?
  10. 单片机矩阵键盘扫描程序c语言,51单片机矩阵键盘扫描程序(源代码)
  11. SVN创建分支与合并(命令与界面)
  12. 怎么用计算机算ess tss,ESS、RSS、TSS分别表示什么?
  13. 第二章 Pyton语言基础、Ipython及Jupyter notebook(?功能,%run命令,魔法函数)
  14. linux 应用编程(持续更新)
  15. 系统集成项目管理工程师-法律法规与标准规范
  16. linux音源管理 二维表,Oracle【二维表管理:约束】
  17. 物联网试点炼狱阶段就此结束了吗?
  18. 渲染系列--图像渲染过程
  19. python工作目录是什么意思_Docker的工作目录是什么意思?
  20. python入门:缺省函数

热门文章

  1. C语言循环求出2的10次幂,C语言求2的100次幂的结果.doc
  2. android重启时间变成1970,Android时间戳转字符串的1970问题
  3. 帝国php.ini路径,帝国CMS数据库配置文件是哪个文件?
  4. 三星s9android recovery,三星S9+刷第三方中文twrp recovery工具和教程
  5. 【docker】修改docker容器配置,设置/修改端口映射
  6. 【ruoyi若依】Caused by: java.lang.NoClassDefFoundError: com/sun/jna/platform/win32/VersionHelpers
  7. mysql 树表删除无效节点
  8. 【Thymeleaf】 循环固定次数/循环次数由变量控制
  9. 【SSL】keytool复制证书
  10. 计算机网络与应用周林 课后题,阅读下面文章,完成