Java并发
码路编
这个作者很懒,什么都没留下…
展开
-
Java并发-Java内存模型
Java内存模型为了屏蔽掉各种硬件和操作系统间访问内存的差异,以实现让Java程序在各种平台下都达到一致的并发效果,Java定义Java内存模型。JMM是一种规范,规范了JVM与计算机内存是如何协同工作的。它规定了一个线程如何和何时可以看到其他线程修改过后共享变量的值,以及在必须时如何同步的访问共享变量。堆是运行时动态分配内存的,存取速度较慢,栈存取速度比堆快。计算机内存架构:...原创 2018-04-07 15:27:36 · 186 阅读 · 0 评论 -
Java并发-HashMap和ConcurrentHashMap
HashMap和ConcurrentHashMap1. HashMap1.1 HashMap 结构 HashMap 底层是一个数组结构,而每一个数组元素后面又是一个链表,HashMap有两个参数影响他的性能,一个是初始容量和加载因子,当HashMap中的条目数量达到了初始容量与加载因子的乘积之后就会发生rehash(扩容),默认的初始容量是16,加载因子是0.75f,即条目...原创 2018-04-30 10:13:32 · 277 阅读 · 0 评论 -
Java并发-线程池
线程池1. 对比new Thead 弊端每次 new Thread 新建对象,性能差线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或OOM缺乏更多功能,如更多执行,定期执行,线程中断线程池的好处重用存在的线程,减少对象创建,消亡的开销,性能佳可有效控制最大并发线程数,提供系统资源利用率,同时可以避免过多资源竞争,避免阻塞。可以...原创 2018-04-30 10:13:14 · 151 阅读 · 0 评论 -
Java并发-J.U.C组件拓展
J.U.C组件拓展1. FutureCallable 与 Runnable 接口对比Future 接口FutureTask 类import lombok.extern.slf4j.Slf4j;import java.util.concurrent.*;/** * Created By liuyao on 2018/4/22 17:30. */@Slf4j...原创 2018-04-30 10:12:49 · 278 阅读 · 0 评论 -
Java并发-J.U.C之AQS
AbstractQueuedSynchronizer - AQS使用Node实现FIFO队列,可以用于构建或者其他同步装置的基础框架。利用了一个int类型表示状态使用方法是继承,使用者要继承AQS,并复写其中的方法子类通过继承并通过实现它的方法管理其状态(acquire 和 release )的方法操纵状态可以同时实现排他锁和共享锁模式(独占,共享),子类要么实现独占,要么实现共...原创 2018-04-30 10:12:24 · 202 阅读 · 0 评论 -
Java并发-Cache一致性协议之MESI
原文链接:《大话处理器》Cache一致性协议之MESI Cache一致性协议之MESI 处理器上有一套完整的协议,来保证Cache一致性。比较经典的Cache一致性协议当属MESI协议,奔腾处理器有使用它,很多其他...转载 2018-04-07 12:50:09 · 894 阅读 · 0 评论 -
Java并发-线程安全性
线程安全性 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么这个类就是线程安全的1. 三个特性原子性:提供了互斥访问,同一时刻只能有一个线程来对它进行操作可见性:一个线程对主内存的修改可以被其他线程观察到有序性:一个线程观察其他线程中的指令执行顺序,由于指令重排...原创 2018-04-14 16:57:36 · 188 阅读 · 0 评论 -
深入学习Java线程池
深入学习Java线程池先来看一下大体的架构:先从最开始的开始吧,我们平时提交的任务都是 Runnable 类型的,可以看到 Executor 里面的 execute 方法就是接受一个Runnable类的参数故我们平时可以直接实现Executor接口:下面这种是线程池同步的执行每一个任务:public class DirectExecutor implements Executor {...原创 2018-11-02 14:41:03 · 1316 阅读 · 0 评论