上一页 1 2 3 4 5 6 7 ··· 12 下一页
摘要: JDK 动态代理 代理模式是常用的 JAVA 设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调 阅读全文
posted @ 2020-03-26 14:50 windy杨树 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 基础知识: 线程:https://www.cnblogs.com/youngao/p/12568580.html 并发基础:https://www.cnblogs.com/youngao/p/12558381.html CAS:https://www.cnblogs.com/youngao/p/12 阅读全文
posted @ 2020-03-26 14:10 windy杨树 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。 两个附加的操作。 支持阻塞的 插入 方法,在队列为空时,获取元素的线程会等待队列变为非空。 支持阻塞的 移除 方法,当队列满时,存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元 阅读全文
posted @ 2020-03-26 13:56 windy杨树 阅读(755) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 Exchanger(交换者)是自 JDK 1.5 起开始提供的工具套件,源于 java.util.concurrent 包。 是一个用于线程间协作的工具类。 Exchanger 用于进行线程间的数据交换。它提供一个同步点,在这个同步点两个线程可以交换彼此的数据。 此类提供对外的操作是同步 阅读全文
posted @ 2020-03-26 13:40 windy杨树 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 Semaphore 类是一个计数信号量,必须由获取它的线程释放, 通常用于限制可以访问某些资源(物理或逻辑的)线程数目。 一个信号量有且仅有 3 种操作,且它们全部是原子的。 初始化、增加和减少。 增加可以为一个进程解除阻塞。 减少可以让一个进程进入阻塞。 Semaphore 管理一系列 阅读全文
posted @ 2020-03-26 13:38 windy杨树 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 1. ConcurrentLinkedQueue 在并发编程中有时候需要使用线程安全的队列,线程安全队列有两种实现方式。 阻塞方式:对入队和出队操作加锁,阻塞队列。 非阻塞方式:通过自旋 CAS 实现,例如:ConcurrentLinkedQueue。 在中等规模的并发场景下,ConcurrentL 阅读全文
posted @ 2020-03-26 13:36 windy杨树 阅读(604) 评论(0) 推荐(0) 编辑
摘要: 1. ConcurrentHashMap 1.1 HaspMap(JDK 1.8) JDK 1.8 HashMap JDK 1.8 对 HashMap 进行了修改,最大的不同就是利用了红黑树,其由数组+链表+红黑树组成。 JDK 1.7 中,查找元素时,根据 hash 值能够快速定位到数组的具体下标 阅读全文
posted @ 2020-03-26 13:33 windy杨树 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 1. ConcurrentHashMap ConcurrentHashMap 是线程安全且高效的 HashMap。 多线程环境下,使用 HashMap 进行 put 操作会引起死循环,如下例,导致 CPU 利用率接近 100%,所以在并发情况下不能使用 HashMap。 public static 阅读全文
posted @ 2020-03-26 13:32 windy杨树 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 1. ReentrantReadWriteLock 概述 ReentrantReadWriteLock 是 Lock 的另一种实现方式,ReentrantLock 是一个排他锁,同一时间只允许一个线程访问,而 ReentrantReadWriteLock 允许多个读线程同时访问,但不允许写线程和读线 阅读全文
posted @ 2020-03-26 13:06 windy杨树 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 1. LockSupport LockSupport 是用来创建锁和其他同步类的基本线程阻塞原语。 是一个简单的代理类,里面的代码都是使用 Unsafe 类里面的方法。 JDK 对 LockSupport 的描述:Basic thread blocking primitives for creati 阅读全文
posted @ 2020-03-26 11:51 windy杨树 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 锁是用来控制多个线程访问共享资源的方式。 Java 程序可以使用 syschronized 关键字实现锁功能,而 Java 5 之后,在并发包中新增了 Lock 接口(以及相关实现类)用来实现锁功能。 Lock 提供了与 syschronized 关键字类似的同步功能,只是在使用时需要 显式地获取和 阅读全文
posted @ 2020-03-26 11:50 windy杨树 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 目录 1 基本概念 进程 进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间,至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。 线程 线程是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享 阅读全文
posted @ 2020-03-25 18:45 windy杨树 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 1. Unsafe 类 Java 不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe 类提供了硬件级别的原子操作。 Unsafe 类在 sun.misc 包下,不属于 Java 标准。很多 Java 的基础类库,包括一些被广泛使用的高性能开发库都是基于 Unsafe 类开发,比如 Net 阅读全文
posted @ 2020-03-24 15:41 windy杨树 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 目录 1 缓存一致性问题 2 优化重排序问题 2.1 指令级并行的重排序(处理器) 2.2 编译器优化的重排序 3 内存模型 3.1 顺序一致性内存模型 4 抽象结构(JMM) 4.1 happens-before关系(先行发生原则) 4.1.1 as-if-serial 和 happens-bef 阅读全文
posted @ 2020-03-24 13:09 windy杨树 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 一、什么是FieldUpdater 在java.util.concurrent.atomic包中,由三个比较特殊的原子类:AtomicIntegerFieldUpdater、AtomicLongFieldUpdater、AtomicReferenceFieldUpdater。通过名称可以看到,这几类 阅读全文
posted @ 2020-03-23 20:04 windy杨树 阅读(247) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 12 下一页