并发基本概念 并发基本概念
同步和异步同步和异步通常用来形容一次方法调用。同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而异步方法通常会在另外一个线程中
2022-05-03
引用 引用
强引用之前我们使用的大部分引用实际上都是强引用,这是使用最普遍的引用。比如下面这段代码中的object和str都是强引用: 不会被垃圾回收器回收。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也
2022-05-03
并发级别 并发级别
由于临界区的存在,多线程之间的并发必须受到控制。根据控制并发的策略,我们可以把并发的级别进行分类,大致上可以分为阻塞、无饥饿、无障碍、无锁、无等待几种。 阻塞:一个线程是阻塞的,那么在其他线程释放资源之前,当前线程无法继续执行。当我们使
2022-05-03
CountDownLatch详解 CountDownLatch详解
CountDownLatch是一个非常实用的多线程控制工具类。“Count Down”在英文中意为倒计数,Latch为门闩的意思。如果翻译成为倒计数门闩,我想大家都会觉得不知所云吧!因此,这里简单地称之为倒计数器。在这里,门闩的含义是:把
2022-05-03
CyclicBarrier详解 CyclicBarrier详解
CyclicBarrier可以理解为循环栅栏。栅栏就是一种障碍物,比如,通常在私人宅邸的周围就可以围上一圈栅栏,阻止闲杂人等入内。这里当然就是用来阻止线程继续执行,要求线程在栅栏处等待。前面Cyclic意为循环,也就是说这个计数器可以反复
2022-05-03
原子类 原子类
JUC 包中的原子类是哪4类?基本类型: 使用原子的方式更新基本类型 AtomicInteger:整形原子类 AtomicLong:长整型原子类 AtomicBoolean :布尔型原子类 数组类型: 使用原子的方式更新数组里的某个元
2022-05-03
线程池 线程池
为什么使用线程池? 降低资源消耗。 通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。 当任务到达时,任务可以不需要的等到线程创建就能立即执行。 提高线程的可管理性。 线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源
2022-05-03
LinkHashMap LinkHashMap
第一张图为LinkedHashMap整体结构图 第二张图专门把循环双向链表抽取出来,直观一点,注意该循环双向链表的头部存放的是最久访问的节点或最先插入的节点,尾部为最近访问的或最近插入的节点,迭代器遍历方向是从链表的头部开始到链表尾部
2021-11-29
HashMap HashMap
HashMap的put方法: public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } ha
2021-11-27
20 / 23