
JDK
文章平均质量分 78
对于jdk部分类库的使用与个人理解
一届贫农
这个作者很懒,什么都没留下…
展开
-
JDK9 module 新特性
java9 module的用法说明,一文搞懂原创 2024-07-25 23:55:15 · 435 阅读 · 0 评论 -
异步编程之美——CompletableFuture
supplyAsync异步开启一个任务,并返回一个结果;入参为Supply函数式接口;CompletableFuture busA = CompletableFuture.supplyAsync(() -> { SmallTool.printTimeAndThread("A公车发车"); SmallTool.sleepMillis(3000); return "A公车到站";});SmallTool.printTimeAndThread(busA);thenComb原创 2021-08-22 22:12:50 · 312 阅读 · 0 评论 -
走进AQS体系(二)—— 条件队列
条件队列在 并发编程中是用于对一类事务在处理时机未到的情况下,让负责处理此类事务的线程进行阻塞,当时机成熟的时候,将其唤醒,使其继续往下处理这件事务;条件队列针对阻塞于某类条件的线程进行集中化的队列管理,能保证当该条件成熟了 ,这些线程能够按照有序的方式一个个转换到同步队列中;需要区分两种唤醒,条件队列的唤醒,是每次唤醒后会将其转换到同步队列,最终这些条件队列上的CONDITION节点都是转换到同步队列中的;同步队列的唤醒,是去争夺处理机,真正去执行线程内容;所以,第一个唤醒不考虑原创 2021-07-09 11:40:11 · 1892 阅读 · 0 评论 -
AQS底层源码浅析1(Deprecated)
自己学习AQS的一些总结,如果有不同见解的,欢迎评论一起探讨,如果有理解不到位的,希望能够帮我指正。AQS的代码设计真的很精巧,可能一个判断就已经包含了n多种含义。但理解了它,会让自己对并发的理解更上一个层次。state是一个锁标志位,是能否上锁,是否排队等所依托的一个重要属性。不同的锁对于该标志的实现也是有所区别的,例如ReentrantLock和ReentrantReadWriteLock;prev是引用了前一个节点,next是引用了下一个队列节点,简而言之,AQS的同步队列就是利用双向链表构建的一个队原创 2020-06-09 13:11:17 · 282 阅读 · 0 评论 -
走进AQS体系(一)—— 独占模式下的AQS
1. 尝试获取资源(子类锁需要提供的自定义方法tryAcquire); 2. 获取不到资源,则入队(自旋+CAS直到入队成功); 3. 唤醒入队节点 (也是线程被阻塞的位置); 4. 如果入队节点的上一个节点是头节点,则直接尝试获取锁,如果获取成功就执行,并将其设置为头节点; 5. 如果尝试获取锁不成功或者上一个节点非头节点,则判断其是否应该park(额外的处理: 前一个节点为SIGNAL,应该直接park;前一个节点是CANCELLED节点,则调整节点为非CANCELLED节点的后继;前一个原创 2021-07-05 15:57:33 · 244 阅读 · 0 评论 -
jdk Future的使用方式
Future是什么在使用线程的时候,我们会理所当然的想到继承Thread或者实现Runnable,但这两种方式都存在着一个问题,无法返回执行结果。并且,继承Thread也会带来一个破坏面向对象原则的问题,即不符合里氏替换原则。为了解决此类问题,JDK1.5后引入了Future和Callable。Callable和Future首先,我们来观察一个Callable接口,它是一个支持泛型并且函数式编程的接口,在使用时我们仅需要实现它的call()方法。其次,我们再来看一下Future接口,各方法解释已原创 2020-09-13 14:32:09 · 594 阅读 · 0 评论 -
正则表达式练习
匹配ip素材:101.12.32.555101.12.32.555101.12.32.555101.12.32.555101.12.32.555答案:^\d+(.\d+){3}$2.匹配前后空白素材: 12XxxXxxxx 12x31x1132 asdsad12 asdasd asdasd 答案:^\s*|\s*$ 3.匹配有相同字串的单词素材:asdaskdjasdkaj aaaa ggee toto papa lsls psps答案:(\w+)\14.原创 2020-07-05 22:27:35 · 235 阅读 · 0 评论 -
jvm的双亲委托机制小结
是什么?我们编写的java代码,最终会被编译为.class文件,再交由JVM去执行。那JVM想要执行程序,就必须要拿到相应的字节码文件。所以这其中,就有了一个类加载的环节。双亲委托机制就是一种java推荐的加载模型,每个加载器都会有相应的职责划分,它们各施其职,互不越界,从而搭起了字节文件和运行时的桥梁。怎么做的?我们编写的每个类可能都会有模块,包名,类名这三个概念,双亲委托机制其实就是根据这些信息来达到相应的加载效果。这也是为什么我们在不同的模块或者不同的包下编写了相同类名或者相同包名和类名的类原创 2020-06-28 22:10:02 · 195 阅读 · 0 评论