
Java、Jdk
文章平均质量分 75
Java、Jdk
尚少
这个作者很懒,什么都没留下…
展开
-
记一次内存可见性的深刻感悟
很多同学都知道,volatile关键字是来保证内存可见性的。那如果变量没有被volatile修饰,它一定是不可见的么?我们来一探究竟。原创 2023-02-27 21:37:32 · 193 阅读 · 1 评论 -
异步神器-CompletableFuture
Jdk 1.8中,提供的CompletableFuture针对上文提到的FutureTask的缺点,对其进行了增强,提供了函数式编程(lambda表达式)、回调机制、链式编程等强大的功能。原创 2023-02-27 00:42:25 · 312 阅读 · 0 评论 -
Java多线程之FutrueTask
Java中创建线程有3种方式,前面2种很多人比较熟悉,继承Thread类或者实现Runnable接口,这2种适用于多线程无返回结果。如果多线程的执行有返回结果,推荐用FutureTask和Callable来创建多线程。原创 2023-02-25 22:11:58 · 418 阅读 · 0 评论 -
CountDownLatch源码分析
CountDownLatch类,从jdk1.5引入;是提供给开发的计数器。如下给出示例:package test;import java.util.concurrent.CountDownLatch;public class CountDownLatchRunner { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch =原创 2022-06-07 18:53:57 · 173 阅读 · 0 评论 -
LinkedHashMap源码分析
LinkedHashMap继承HashMap,大部分原理和HashMap相同,本文着重讲解其多出来的一部分(不熟悉HashMap原理(或源码)的同学,建议先自行查找资料,了解一下HashMap的原理)。 点击去看,只有一行代码,调用putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict)方法,如下:再进去看这个方法,如下:代码挺长,感觉挺复杂,莫慌,作者带着你。此时若是首次执行put(K key, V value原创 2022-06-14 13:23:11 · 218 阅读 · 0 评论 -
ReentrantLock源码分析
ReentrantLock相信很多人都使用过,它作为Lock接口的实现类,帮助我们java程序员实现线程安全的。相比于synchronized,其提供了更灵活、更强大的api,下面我们来一探究竟。 除了最常使用的new ReentrantLock(),我们还可以传入一个布尔值来控制是公平锁还是非公平锁:new ReentrantLock(true),不传就是非公平的。 而sync就是ReentrantLock内部的一个属性,Sync类型;Sync类也是ReentrantLock的内部类,继承自Ab原创 2022-07-14 14:38:55 · 94 阅读 · 0 评论 -
Java中的反射,反射是什么
Java程序员都知道,类中private修饰的字段、方法,只能在类内部使用;那真的没有办法在类外部使用private修饰的成员么?这时本篇的主角登场了:反射机制提供在运行时,对于任意一个类,都能够访问这个类的所有信息(构造函数、字段、方法等,也不管是public还是private修饰的)。在java中,编写的类都是.java结尾,编译后是以.class结尾。程序运行后,.class文件加载到jvm中,转换为Class对象。类可以有多个对象,但这个类对应的Class对象仅有一个。原创 2022-11-06 00:49:40 · 86 阅读 · 0 评论