摘要:
编程核心前置知识: 技术是不断更新迭代的,我们更需要掌握的是不变性的知识。不管技术栈有多么新,多么庞杂,都离不开以下四个方面: 1.计算机组成原理 2.操作系统 3.计算机网络 4.数据结构 书籍推荐: C语言: 入门: C Primer Plus C++: 入门: C++ Primer Plus 阅读全文
摘要:
同步:我去教室找张三,张三不在座位上,我就在座位上等张三回来 异步:我去教室找张三,张三不在座位上,我就让旁边同学等张三回来就通知我,这个时候我可以去做其他事情 package JUC.completable; import java.util.concurrent.CompletableFutur 阅读全文
摘要:
把复杂任务拆分成多个子任务,最终把子任务结果再做一个合并 package JUC.forkJoin; import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; import ja 阅读全文
摘要:
11.1 线程池简介 线程池(英语: thread pool) : 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度 阅读全文
摘要:
10.1 Block ingQueue简介 Concurrent包中, BlockingQueue很好的解决了多线程中,如何高效安全"传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们 阅读全文
摘要:
9.1.读写锁 1.读锁发生死锁的情况:线程1修改记录1,同时线程2在读取记录1;线程2修改记录1,同时线程1在读取记录1, 线程1需要等待线程2读完后释放锁才能修改,线程2也需要等待线程1读完后释放锁才能修改。互相持有对方所需的锁。 2.写锁发生死锁的情况:线程1写操作记录1的同时操作记录2;线程 阅读全文
摘要:
8.1 减少计数CountDownLatch CountDownLatch类可以设置一个计数器,然后通过countDown方法来进行减1的操作,使用await方法等待计数器不大于0 ,然后继续执行await方法之后的语句。● CountDownLatch主要有两个方法,当一个或多个线程调用await 阅读全文
摘要:
1.FutureTask充当Runnable接口与Callable的中间对象 package JUC.callable; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; imp 阅读全文
摘要:
6.1 synchronized 6.2 公平锁和非公平锁 源码: 6.3 可重入锁 6.3.1 synchronized(隐式) package JUC.lock; public class SyncLockDemo { public synchronized void add() { add() 阅读全文
摘要:
5.1 集合线程不安全演示 package JUC.lock; import java.util.ArrayList; import java.util.List; import java.util.UUID; /** * 演示:List集合线程不安全 */ public class ThreadD 阅读全文