引子本文从最基本的 IO 出发,引出零拷贝技术,继而发散到用到零拷贝技术的 NIO,谈及 NIO,就必须谈一谈著名的网络通信框架 Netty 了,而 Netty 又是 metaQ、HSF等熟知技术栈的基础,本文旨在以 NIO 为核心,辐射到其相关的知识点。 Zero Copy 这一部分基本上参考:深 ...
多线程(七)--- 三种方式实现生产者-消费者
生产者-消费者模式是一个十分经典的多线程并发协作的模式,弄懂生产者-消费者问题能够让我们对并发编程的理解加深。所谓生产者-消费者问题,实际上主要是包含了两类线程,一种是生产者线程用于生产数据,另一种是消费者线程用于消费数据,为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库,生产 ...
多线程(六)--- 并发工具包
CountDownLatch(倒计时器)在多线程协作完成业务功能时,有时候需要等待其他多个线程完成任务之后,主线程才能继续往下执行业务功能,在这种的业务场景下,通常可以使用 Thread 类的 join 方法,让主线程等待被 join 的线程执行完之后,主线程才能继续往下执行。 使用线程间消息 ...
多线程(五)--- FutureTask
转自:http://www.ideabuffer.cn/2017/04/06/FutureTask源码解析/ FutureTask介绍FutureTask是一种可以取消的异步的计算任务。它的计算是通过Callable实现的,可以把它理解为是可以返回结果的Runnable。 使用FutureTas ...
多线程(四)--- 线程池
深入理解Java线程池:ThreadPoolExecutor ps:不过说实话,写的败笔就是线程状态转换那一块~ 简略介绍线程池 转:http://www.ideabuffer.cn/2017/04/04/深入理解Java线程池:ThreadPoolExecutor/#addWorker ...
多线程(三)--- 并发容器
ConcurrentHashMap这个我在 Map & Set 源码分析 中已经非常详细的讲过了,这里就直接略过了… CopyOnWriteArrayList https://juejin.im/post/5aeeae756fb9a07ab11112af 吖!这个更简单哈哈哈,其实也就是读 ...
多线程(二)--- ThreadLocal
ThreadLocal这个需要好好写一下,感觉是比较麻烦的。难点主要就在 Thread 和 ThreadLocal 之间的关系。 主要参考了ThreadLocal的原理部分,就是这篇文章终于让我明白我想错了 初始化的时候,注意不要保存对象的引用,这样的话拷贝的副本也必然是对象的引用,最终都会改变 ...
多线程(一)--- 锁 & 关键字
线程的基本操作及状态转换创建线程的三种方式继承 Thread 类方法一 继承 Thread 类并重写 run 方法 创建线程对象 调用该线程对象的 start() 方法来启动线程 demo class ThreadDemo{ public static void main(Stri ...
Leetcode学习
两数之和(1)题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例给定 nums = [2, 7, 11, 15], target = 9 ...