多线程
文章平均质量分 90
高并发
ZNineSun
大道至简,返璞归真
展开
-
Java中并发下的ThreadlocalRandom
在看同事写的代码的时候发现代码里有很多像:如果我们想要生成一个随机数,通常会使用Random类。但是在并发情况下Random生成随机数的性能并不是很理想,今天给大家介绍一下JUC包中的用于生成随机数的类–ThreadLocalRandom.(本文基于JDK1.8)当然Random随机数也可以保证线程的安全,但是Random随机数生成是和种子seed有关,而为了保证线程安全性,Random通过CAS机制来保证线程安全性。从next()方法中我们可以发现seed是通过自旋锁和CAS。原创 2024-01-10 10:44:30 · 773 阅读 · 0 评论 -
一文让你彻底了解多线程
System . out . println("请大家多多关注");} }System . out . println("Runable:请大家多多关注");} }如果想要执行的线程有返回,可以使用Callable。return "Callable:请大家多多关注";} }CPU的缓存是以缓存行(cache line)为单位进行缓存的,当多个线程修改相互独立的变量,而这些变量又处于同一个缓存行时就会影响彼此的性能。这就是伪共享。......原创 2022-08-26 16:45:38 · 650 阅读 · 0 评论 -
ThreadLocal详解
在 java 线程中,每个线程都有一个 ThreadLocalMap 实例变量(如果不使用 ThreadLocal,不会创建这个 Map,一个线程第一次访问某个 ThreadLocal 变量时,才会创建)。ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一些。它主要由四个方法组成initialValue(),get(),set(T),re原创 2022-06-26 20:16:48 · 6447 阅读 · 0 评论 -
Thread.sleep(0)到底有什么用
我们可能经常会用到Thead.sleep()函数来吧使线程挂起一段时间。但是你真的了解这个函数的真正作用吗?先思考两个问题:假设现在是 2022-5-26 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2022-5-26 12:00:01.000 的时候,这个线程会不会被唤醒?Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?其实回答这个问题的本质就是操作系统对资源的分配不管有没有学习过操作系统的小伙伴原创 2022-05-26 20:39:38 · 224 阅读 · 0 评论 -
谈谈FastLocal为啥这么快
1.FastThreadLocal 的引入背景和原理简介既然 jdk 已经有 ThreadLocal,为何 netty 还要自己造个 FastThreadLocal?看名字就能看出来最明显和ThreadLocal不一样的特征就是快,那么FastThreadLocal 快在哪里?这需要从 jdk ThreadLocal 的本身说起。如下图:在 java 线程中,每个线程都有一个 ThreadLocalMap 实例变量(如果不使用 ThreadLocal,不会创建这个 Map,一个线程第一次访问某个 T原创 2022-05-23 12:36:00 · 326 阅读 · 0 评论 -
线程池很难吗?带你深入浅出线程池
文章目录1.初识线程池2.为什么使用线程池3.线程池应用场景4.深入浅出线程池5.自定义线程池5.1 四个核心参数5.2 实现步骤6.Java内置线程池-ExecutorService6.1 介绍6.2 ExecutorService获取6.3 Java内置线程池-ScheduledExecutorService6.4 Java内置线程池-异步计算结果(Future)7.综合案例7.1 秒杀商品案例介绍要求:思路代码步骤:7.2 取款案例介绍要求思路8.总结1.初识线程池线程池其实就是一种多线程处理形式原创 2022-05-10 16:22:52 · 344 阅读 · 0 评论