java
文章平均质量分 81
SummerMangoZz
菲fans
展开
-
volatile关键字详解(从缓存一致性谈起)
在讲解volatile关键字之前,我们先来看看操作系统中缓存一致性的概念。众所周知,cpu的运行速度是远高于主存的读写速度的,在运行过程中,为了交换数据,cpu必须频繁的进行数据的读写操作,主存读写速度慢造成了cpu运行的吞吐量减少。为了解决这一问题,现在的机器都会在添加一层高速缓存(其实不止一层,有多层).以后每次cpu进行读写操作时,都直接和高速缓存交互,之后在讲高速缓存中的数据回刷到主存原创 2017-07-14 10:51:06 · 4630 阅读 · 4 评论 -
阻塞队列
首先我们来看这样一个应用场景。假如现在有一个系统有两端,一端负责发送指令(比如扣款指令,放款指令),一端负责接受指令并执行相应的操作。这两个功能应该作为两个单独的线程在后台一直执行,以便及时的发送和处理消息。为了达到这个目的,我们必须设置两个一直轮循的线程,和一个用来存储发送端发送的指令的队列。假如现在消费者线程由于要执行完相应的指令操作(比如扣款,放款等)导致从队列中消费数据的速度远小于生产端发原创 2017-08-26 23:43:57 · 536 阅读 · 0 评论 -
线程池源码剖析(创建,复用,超时处理)
在jdk1.5后,官方为我们实现了线程池ThreadPoolExecutor,通过该线程池,我们可以一次性的预先执行代价高昂的线程分配,而且所有分配的线程都是可重用的。下面我们将会根据Executors.newFixedThreadPool为切入口分析以下线程池的创建过程和线程池的线程分配问题。当我们执行Executors.newFixedThreadPool时,我们一直跟进构造这个方法的内部原创 2017-08-27 18:06:14 · 750 阅读 · 2 评论