摘要:并发编程实践 1. ArrayBlockingQueue的使用 这一节我们讲解logback异步打印机制中ArrayBlockingQueue的使用 异步日志打印模型概述 在高并发、高流量且响应时间要求比较小的系统中同步打印日志已经满足不了需求了,这是因为打印日志本身是需要写磁盘的,写磁盘的操作会暂
阅读全文
摘要:Java并发包中线程同步器原理剖析 1. CountDownLatch原理剖析 案例介绍 日常开发中经常会遇到需要在主线程中开启多个线程去并行执行任务,并且主线程需要等待所有子线程执行完毕再进行汇总的场景。在CountDownLatch出现之前一般都使用线程的join()方法来实现这一点。 使用Co
阅读全文
摘要:Java并发包中ScheduledThreadPoolExcutor原理探究 1. 介绍 ScheduledFutureTask内部还有一个变量period用来表示任务的类型,任务类型如下: period = 0, 说明当前任务是一次性的,执行完毕后就退出了。 period为负数,说明当前任务为fi
阅读全文
摘要:Java并发包中线程池ThreadPollExecutor原理探究 1. 介绍 线程池主要解决两个问题:一是当执行大量异步任务时线程池能够提供较好的性能。在二是线程池提供了一种资源限制和管理的手段,比如可以限制线程的个数,动态新增线程等。 ThreadPoolExecutor继承了AbstractE
阅读全文
摘要:Java并发包中并发队列原理剖析 JDK中提供了一系列场景的并发安全队列。总的来说,按照实现方式的不同可分为阻塞队列和非阻塞队列,前者使用锁实现,而后者则使用CAS非阻塞算法实现。 1. ConcurrentLinkedQueue原理探究 ConcurrentLinkedQueue是线程安全的无界非
阅读全文
摘要:Java 并发包中锁原理剖析 1. LockSupport工具类 JDK中的rt.jar包里面的LockSupport是个工具类,它的主要作用是挂起和唤醒线程,该工具类是创建锁和其他同步类的基础。 LockSupport类与每个使用它的线程都会管理一个许可证,在默认的情况下调用LockSupport
阅读全文
摘要:设计模式之行为型4 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 1. 解释器模式 解释器模式(interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该
阅读全文
摘要:Java并发包中并发List源码剖析 1. 介绍 并发包中的并发List只有CopyOnWriteArrayList。CopyOnWriteArrayList是一个线程安全的ArrayList,对其进行的修改操作都是在底层的一个复制的数组(快照)上进行的,也就是使用了写时复制策略。 CopyOnWr
阅读全文
摘要:Java并发包中原子操作类原理剖析 JUC包提供了一系列的原子性操作类,这些类都是使用非阻塞算法CAS实现的,相比使用锁实现原子性操作这在性能上有很大提高。 1. 原子变量操作类 JUC并发包中包含有AtomicInteger、AtomicLong和AtomicBoolean等原子性操作类,它们的原
阅读全文
摘要:设计模式之行为型3 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 1. 迭代器模式 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。核心:
阅读全文
摘要:设计模式之行为型2 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 1. 观察者模式 观察者模式又叫做发布-订阅(Public/Subscribe)模式。 观察者模式定义了一种一对多的依赖关系,让
阅读全文
摘要:Java并发包中ThreadLocalRandom类原理剖析 ThreadLocalRandom类是JDK 7在JUC包下新增的随机数生成器。 1. Random类及其局限性 java.util.Random的使用方法 public class RandomTest{ public static v
阅读全文
摘要:设计模式之行为型1 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 1. 策略模式 面向对象的编程并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类
阅读全文
摘要:并发编程的其他基础知识 1. 什么是多线程并发编程 并发 并行 线程数多于CPU的个数,所以一般都称多线程并发编程而不是多线程并行编程。 2. Java中的线程安全问题 操作共享变量时会出现脏数据或其他不可预见的结果。 典型的就是对计数器的操作。 3. Java中共享变量的内存可见性问题 Java内
阅读全文
摘要:设计模式之结构型3 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 1. 组合模式 组合模式(Composite),将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合模式结构图 代码实现 C
阅读全文
摘要:设计模式之结构型2 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 1. 装饰模式 装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 装饰模式结构图 Component,是定义一个对象接口
阅读全文
摘要:基础篇之并发编程基础 1. 进程与线程 堆是一个进程中最大的一块内存,堆是被进程中的所有线程共享的,是进程创建的时候分配的,堆里面主要存放使用new操作创建的对象实例。 方法区则用来存放JVM加载的类,常量及静态变量等信息,也是线程共享的。 2. 线程的创建与运行 Java中有三种线程创建方式,分别
阅读全文
摘要:设计模式之结构型1 1. 代理模式 总的来说,根据代理类的创建时机和创建的方式不同,可以将代理分为静态代理和动态代理。 代理模式属于开闭原则的典型应用。 代理对象存在的价值主要用于拦截对真实业务对象的访问; 代理对象应该具有和目标对象相同的方法,即实现共同的接口或继承于同一个类; 代理对象应该是目标
阅读全文
摘要:本文学习自大话设计模式 设计模式之创建型 1. 单例模式 单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式有5种基本实现方式。 饿汉单例 线程安全,非懒加载,直接创建实例 public class EhSingleton{ private static
阅读全文
摘要:数组中出现频率为前k的元素数组 这个题的作答的过程中,题解细节实现的收获远超于题解思路本身,做完之后我迫不及待的写下这个笔记。 题目描述 本题是来力扣的第347题 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 本题是移到mediu
阅读全文