![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
文章平均质量分 94
关于JDK中JUC的使用
烟雨忆南唐
这个作者很懒,什么都没留下…
展开
-
第二章:CompletableFuture
从Java8开始引入了CompletableFuture,它是Future的功能增强版,减少阻塞和轮询,可以传入回调对象,当异步任务完成或者发生异常时,自动调用回调对象的回调方法。下,isDone()方法容易消耗CPU资源,对于真正的异步处理我们希望是可以通过传入回调函数,在Future结束时自动调用该回调函数,这样,我们就不用等待结果。去执行任务,子线程可能比较耗时,启动子线程开始执行任务后,主线程就去做其他事情了,忙其他事情或者先执行完,过了一会才去获取子任务的执行结果或变更的任务状态。原创 2023-09-11 09:46:09 · 176 阅读 · 0 评论 -
第一章_线程基础知识
java线程是通过start的方法启动执行的,主要内容在native方法start()中,openjdk的写JNI一般是一一对应的,Thread.java对应的就是Thread.c,start0其实就是JVM_StartThread。同一时刻,大家真的都在做事情,你做你的,我做我的,但是我们都在做。Java虚拟机可以支持方法级的同步和方法内部一段指令序列的同步,这两种同步结构都是使用管程(Monitor,更常见的是直接将它称为“锁”)来实现的。并发(concurrent):是在同一实体上的多个事件;原创 2023-09-03 12:50:45 · 1317 阅读 · 1 评论 -
JUC常用4大并发工具类详解
首先这个第一个参数也是 Int 类型的,传入的是执行线程的个数,这个数量和 CountDownLatch 不一样,这个数量是需要和线程数量吻合的,CountDownLatch 则不一样,CountDownLatch 可以大于等于,而 CyclicBarrier 只能等于,然后是第二个参数,第二个参数是 barrierAction,这个参数是当屏障开放后,执行的任务线程,如果当屏障开放后需要执行什么任务,可以写在这个线程中。通过返回结果就可以很直接的看到业务线程是在初始化线程完全跑完之后,才开始执行的。原创 2023-07-19 15:54:31 · 553 阅读 · 0 评论