摘要:
@ 在idea中使用debug可以让多个线程以任意顺序执行,先介绍一下基础知识,然后介绍具体做法。 1 debug 两类 Supspend 在断点处右键,可以看到Suspend分两类,一类是All,一类是Thread。当某个线程到达断点处会触发Suspend,All会使得所有线程都暂停,Thread 阅读全文
摘要:
@ 根据动力节点2020Spring笔记整理而成,视频地址https://www.bilibili.com/video/BV1nz4y1d7uy/。 1 Spring 概述 Spring 根据代码的功能特点,使用 Ioc 降低业务对象之间耦合度。IoC 使得主业务在相互调用过程中,不用再自己维护关系 阅读全文
摘要:
本文为动力节点2020MyBatis笔记整理,视频地址为https://www.bilibili.com/video/BV185411s7Ry?from=search&seid=5830402177484068371。 王鹤老师的笔记可自行去动力节点官网下载。 1 介绍 Java WEB 通常分为三 阅读全文
摘要:
项目是书城项目,感觉不太完整。在讲各种web技术的同时,顺带做下项目。该项目没有使用SSM、SSH等框架,Javaweb三层框架都是直接写的代码。大致熟悉一下流程即可,在真正开发的时候会用框架来做。 B站地址:https://www.bilibili.com/video/BV1Y7411K7zz?p 阅读全文
摘要:
@ BlockingQueue 称为堵塞队列,可以向队列中添加元素,也可以从队列中取出元素。 当队列为空时,取出可以返回失败,抛出异常或者堵塞;当队列满时,添加可以返回失败,抛出异常或者堵塞。堵塞的方法分别是 put/take。 生产者和消费者问题可以通过堵塞队列实现,只需要在队列为空或满的时候堵塞 阅读全文
摘要:
CopyOnWriteArrayList 是一种写时复制的 ArrayList,在写操作时加锁,拷贝原数组成员,在拷贝的数组上进行修改,并重置数组。 该类对于读写可以并发执行,如果写线程还未重置数组,读到的是旧数据;如果已经重置,读到的是新数据。 1 基本属性和方法 写时使用 ReentrantLo 阅读全文
摘要:
1 介绍 1.1 ReentrantReadWriteLock ReentrantReadWriteLock 是一个读写锁,允许多个读或者一个写线程在执行。 内部的 Sync 继承自 AQS,这个 Sync 包含一个共享读锁 ReadLock 和一个独占写锁 WriteLock。 该锁可以设置公平和 阅读全文
摘要:
ThreadLocal 是线程的本地变量,也就是不同线程的同一个 ThreadLocal 的 get/set 是独立的。 每个线程 Thread 内部有 ThreadLocalMap,Map 的键是 ThreadLocal<T>,值是泛型 T。 那么,根据线程 Thread 和 ThreadLoca 阅读全文
摘要:
1 介绍 Semaphore 称为信号量,也是一个共享锁。通过一个内部类 Sync 继承 AQS,并重写了 tryAcquireShared 和 tryReleaseShared。共享锁具体原理可以见我 AQS 的第二篇。AQS(二)共享锁 必须给初始的资源个数 state。每次 acquire 都 阅读全文
摘要:
1 介绍 CountDownLatch是一种AQS共享锁,可以看之前的介绍AQS(二)共享锁(基于JDK 8) CountDownLatch 定义了一个计数器,和一个阻塞队列, 当计数器的值递减为0之前,阻塞队列里面的线程处于挂起状态,当计数器递减到0时会唤醒阻塞队列所有线程,这里的计数器是一个标志 阅读全文