随笔分类 -  JUC

摘要:同步:我去教室找张三,张三不在座位上,我就在座位上等张三回来 异步:我去教室找张三,张三不在座位上,我就让旁边同学等张三回来就通知我,这个时候我可以去做其他事情 package JUC.completable; import java.util.concurrent.CompletableFutur 阅读全文
posted @ 2022-05-03 23:38 狂热搬砖家 阅读(10) 评论(0) 推荐(0) 编辑
摘要:把复杂任务拆分成多个子任务,最终把子任务结果再做一个合并 package JUC.forkJoin; import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; import ja 阅读全文
posted @ 2022-05-03 23:21 狂热搬砖家 阅读(36) 评论(0) 推荐(0) 编辑
摘要:11.1 线程池简介 线程池(英语: thread pool) : 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度 阅读全文
posted @ 2022-05-03 22:48 狂热搬砖家 阅读(14) 评论(0) 推荐(0) 编辑
摘要:10.1 Block ingQueue简介 Concurrent包中, BlockingQueue很好的解决了多线程中,如何高效安全"传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们 阅读全文
posted @ 2022-05-03 20:55 狂热搬砖家 阅读(19) 评论(0) 推荐(0) 编辑
摘要:9.1.读写锁 1.读锁发生死锁的情况:线程1修改记录1,同时线程2在读取记录1;线程2修改记录1,同时线程1在读取记录1, 线程1需要等待线程2读完后释放锁才能修改,线程2也需要等待线程1读完后释放锁才能修改。互相持有对方所需的锁。 2.写锁发生死锁的情况:线程1写操作记录1的同时操作记录2;线程 阅读全文
posted @ 2022-05-03 19:29 狂热搬砖家 阅读(42) 评论(0) 推荐(0) 编辑
摘要:8.1 减少计数CountDownLatch CountDownLatch类可以设置一个计数器,然后通过countDown方法来进行减1的操作,使用await方法等待计数器不大于0 ,然后继续执行await方法之后的语句。● CountDownLatch主要有两个方法,当一个或多个线程调用await 阅读全文
posted @ 2022-05-03 17:22 狂热搬砖家 阅读(15) 评论(0) 推荐(0) 编辑
摘要:1.FutureTask充当Runnable接口与Callable的中间对象 package JUC.callable; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; imp 阅读全文
posted @ 2022-05-03 15:56 狂热搬砖家 阅读(19) 评论(0) 推荐(0) 编辑
摘要:6.1 synchronized 6.2 公平锁和非公平锁 源码: 6.3 可重入锁 6.3.1 synchronized(隐式) package JUC.lock; public class SyncLockDemo { public synchronized void add() { add() 阅读全文
posted @ 2022-05-03 14:00 狂热搬砖家 阅读(18) 评论(0) 推荐(0) 编辑
摘要:5.1 集合线程不安全演示 package JUC.lock; import java.util.ArrayList; import java.util.List; import java.util.UUID; /** * 演示:List集合线程不安全 */ public class ThreadD 阅读全文
posted @ 2022-05-03 11:13 狂热搬砖家 阅读(22) 评论(0) 推荐(0) 编辑
摘要:线程间定制化通信 方案:给每个线程定义一个标志位。 package JUC.lock; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.conc 阅读全文
posted @ 2022-05-03 10:22 狂热搬砖家 阅读(28) 评论(0) 推荐(0) 编辑
摘要:线程间通信 对于两个线程a,b; 首先线程a: (1) 判断:变量值如果为0 (2) 干活:变量值+1 (3) 通知:a线程通知b线程对变量-1 其次线程b: (1) 判断:变量值如果为1 (2) 干活:变量值-1 (3) 通知:b线程通知a线程对变量+1 依次类推。。。 代码实现:方式一:sync 阅读全文
posted @ 2022-05-03 00:12 狂热搬砖家 阅读(22) 评论(0) 推荐(0) 编辑
摘要:2.1 Synchronized 2.1.1 Synchronized 关键字回顾 synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1.修饰一个代码块 , 被修饰的代码块称为同步语句块 , 其作用的范围是大括号{}括起来的代码 , 作用的对象是调用这个代码块的对 阅读全文
posted @ 2022-05-02 20:00 狂热搬砖家 阅读(24) 评论(0) 推荐(0) 编辑
摘要:1.1 JUC简介 在Java中,线程部分是一个重点,本篇文章说的JUC也是关于线程的。JUC就是java.util.concurrent工具包的简称。这是一一个处理线程的工具包, JDK1.5开始出现的。 1.2 进程与线程 进程( Process )是计算机中的程序关于某数据集合上的一次运行活动 阅读全文
posted @ 2022-05-02 19:18 狂热搬砖家 阅读(103) 评论(0) 推荐(0) 编辑
摘要:参考自尚硅谷 附上链接:https://www.bilibili.com/video/BV1Kw411Z7dF?spm_id_from=333.999.0.0 阅读全文
posted @ 2022-05-02 17:45 狂热搬砖家 阅读(33) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示