java
文章平均质量分 92
java
俩只猴
独自奋斗的程序猿
展开
-
java之ThreadLocal原理总结
前言多线程访问同一个共享变量时特别容易出现并发问题,特别是在多个线程需要对一个 共享变量进行写入时。为了保证线程安全,一般使用者在访问共享变量时需要进行适当的同步同步的措施一般是加锁,这就需要使用者对锁有一定的了解,这显然加重了使用者的 负担。那么有没有一种方式可以做到,当创建一个变量后,每个线程对其进行访问的时候访问的是自己线程的变量呢?其实 ThreadLocal就可以做这件事情,虽然 ThreadLocal并不是为了解决这个问题而出现的。ThreadLocal简介和使用ThreadLocal是原创 2021-03-05 11:28:03 · 1782 阅读 · 1 评论 -
JAVA 栈,为什么要使用Deque,而不推荐使用Stack,Deque中ArrayDeque与LinkedList的区别,Deque方法详解
站在大佬的肩膀看世界。转载链接:https://blog.csdn.net/qq_44013629/article/details/106461200 ArrayDeque , LinkedList , Stack的关系差不多就是下图那样 Stack实现了Vector接口,LinkKist实现了Deque,List接口,Arra转载 2021-03-02 15:41:18 · 1687 阅读 · 1 评论 -
java之并发包中的原子类
前言为了避免多线程下由于操作的原子性产生的安全问题,在JDK中的JUC包下提供了一系列使用非阻塞CAS算法实现的原子性操作类,相比使用锁实现的原子性减少了线程的上下文切换,在性能上有了很大的提高。本文将总结一下JUC下面的一些典型类。原子变量操作类在JUC包下,有许多原子性操作类,如图:里面有 AtomicInteger,AtomicLong,AtomicBoolean,AtomicLongArray等,因为原子性操作的实现逻辑类似,所以本文将总结逻辑相对简单的AtomicLong。Atomi原创 2020-12-31 10:13:14 · 219 阅读 · 0 评论 -
java之并发包中的LockSupport类
前言JDK中的JUC下包含了各种锁,而实现锁的AQS等中使用了LockSupport这个工具类,所以在学习其他源码之前,很有必要去了解一下LockSupport工具类的原理。LockSupport相关LockSupport类是JDK中rt.jar包下面的一个工具类,它的主要作用是挂起和唤醒线程。该工具类是创建锁和其他同步类的基础。可以这么理解,LockSupport类与每个使用他的线程会关联一个许可证,在默认情况下条用LockSupport类的方法的线程是不持有许可证的。LockSupport是使用原创 2020-12-31 10:05:47 · 357 阅读 · 0 评论 -
Java之Random和ThreadLocalRandom
前言在JDK7之前,java.util.Random都是使用比较广泛的随机数生成类,但是在多线程下的缺陷,也让JDK7之后再JUC包下新增了ThreadLocalRandom。Random相关先从源码的角度来看看java.util.Random类的使用方法:// 构造函数1:public Random() { this(seedUniquifier() ^ System.nanoTime());}// 构造函数2:public Random(long seed) { if (getC原创 2020-12-31 10:07:41 · 368 阅读 · 1 评论