摘要:
我在网上看到了不少介绍IDEA快捷键的帖子,但总感觉对其介绍不完整,在这里我专门翻译了IDEA官方的快捷键手册,其中一些翻译可能不太准确,希望大家见谅。 1 编辑相关(Edit) 热键 说明Ctrl + Space 简单的代码自动补全,如类名、方法名、变量名等Ctrl + Shift + Space 阅读全文
摘要:
1 前言 Java的线程既是工作单元,也是执行机制。从JDK 5开始,把工作单元与执行机制分离开来。工作单元包括Runnable和Callable,而执行机制由Executor框架提供. 在HotSpot VM的线程模型中,Java线程被一对一映射为本地操作系统线程。Java线程启动时会创建一个本地 阅读全文
摘要:
1 前言 线程池是并发编程中一个重要的概念和技术。大多数异步或并发执行任务都会用到线程池。 线程池,正如其名,它是有一定数量的线程的池子,它会执行被提交过来的任务,执行完一个任务后不会马上结束,它们会继续等待或执行新的任务。线程池有两个重要的概念一个是任务队列,另一个是工作者线程 。任务队列是存放任 阅读全文
摘要:
1 前言 之前的文章异步任务执行器简介对ExecutorService有过简单的介绍,AbstractExecutorService是一个实现ExecutorService接口的非常重要的抽象类,它提供了ExecutorService接口的默认实现。一般情况下,我们可直接继承AbstractExec 阅读全文
摘要:
1 引子 Fork/Join框架是从Java1.7开始提供的一个并行处理任务的框架(本篇博客基于JDK1.8分析),它的基本思路是将一个大任务分解成若干个小任务,并行处理多个小任务,最后再汇总合并这些小任务的结果便可得到原来的大任务结果。 从字面意思来理解Fork/Join框架,"Fork"表示“分 阅读全文
摘要:
1 简介 上一篇博客“异步任务服务简介”对FutureTask做过简要介绍与分析,这里再次对FutureTask做一次深入的分析(基于JDK1.8)。 FutureTask同时实现了Future 、Runnable接口,因此它可以交给执行器Executor去执行这个任务,也可以由调用线程直接执行ru 阅读全文
摘要:
以前线程Thread既表示执行的任务,又表示执行的机制。在JDK1.5中,java并发框架提供了一种“执行服务”的相关API,它将"任务的执行"和"任务的提交“相分离,”执行服务“封装了任务执行的细节,对于任务提交者来说,它可进一步聚焦于任务本身,如任务提交、获取任务执行后的结果、取消任务而不需要关 阅读全文
摘要:
1.简介 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。 1)支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。 2)支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。 阻塞队列常用于 阅读全文
摘要:
1.简介 并发编程中,常用到线程安全队列。实现安全队列有两种方式,一种是阻塞算法,另一种是非阻塞算法。阻塞算法一般会使用阻塞锁来实现,非阻塞算法会使用自旋锁(CAS循环)来实现。 ConcurrentLinkedQueue是非阻塞线程安全队列,这是一个基于单向链表的无界队列,遵守先进先出的排序规则。 阅读全文
摘要:
1.引子 StampedLock类,在JDK1.8引入,是对ReenrantReadWriteLock的补充增强,它不是依赖AQS框架实现的锁,但还是等待队列这种并发实现机制,和ReenrantReadWriteLock有很多相似之处。StampedLock增加了一些新的功能,如读/写锁的转换、还能 阅读全文