摘要: 本文主要讲并行优化的几种方式, 其结构如下: 锁优化 减少锁的持有时间 例如避免给整个方法加锁 改进后 减小锁的粒度 将大对象,拆成小对象,大大增加并行度,降低锁竞争. 如此一来偏向锁,轻量级锁成功率提高. 一个简单的例子就是jdk内置的ConcurrentHashMap与SynchronizedM阅读全文
posted @ 2018-06-25 07:18 大道方圆 阅读(215) 评论(0) 编辑
摘要: 转自: GitHub/architect-awesome , 大体结构如下(更新时间: 2018-06-22) 数据结构 队列 《java队列——queue详细分析》 非阻塞队列:ConcurrentLinkedQueue(无界线程安全),采用CAS机制(compareAndSwapObject原子阅读全文
posted @ 2018-06-22 12:40 大道方圆 阅读(26) 评论(0) 编辑
摘要: 本文主要讲解几种常见并行模式, 具体目录结构如下图. 单例 单例是最常见的一种设计模式, 一般用于全局对象管理, 比如xml配置读写之类的. 一般分为懒汉式, 饿汉式. 懒汉式: 方法上加synchronized 这种方式, 由于每次获取示例都要获取锁, 不推荐使用, 性能较差 懒汉式: 使用双检锁阅读全文
posted @ 2018-06-11 07:12 大道方圆 阅读(531) 评论(2) 编辑
摘要: 线程池优势 在业务场景中, 如果一个对象创建销毁开销比较大, 那么此时建议池化对象进行管理. 例如线程, jdbc连接等等, 在高并发场景中, 如果可以复用之前销毁的对象, 那么系统效率将大大提升. 另外一个好处是可以设定池化对象的上限, 例如预防创建线程数量过多导致系统崩溃的场景. jdk中的线程阅读全文
posted @ 2018-06-04 09:24 大道方圆 阅读(482) 评论(0) 编辑
摘要: 有返回值的方法没问题, 直接andReturn就行了. 对于set方法没有返回值, 报错AssertionError, 需要如下处理.阅读全文
posted @ 2018-05-31 17:03 大道方圆 阅读(13) 评论(0) 编辑
摘要: 本文主要介绍jdk中常用的同步控制工具以及并发容器, 其结构如下: 同步控制工具类 ReentrantLock 简而言之, 就是自由度更高的synchronized, 主要具备以下优点. 可重入: 单线程可以重复进入,但要重复退出 可中断: lock.lockInterruptibly() 可限时:阅读全文
posted @ 2018-05-31 11:13 大道方圆 阅读(306) 评论(0) 编辑
摘要: 目录 无锁即无障碍的运行, 所有线程都可以到达临界区, 接近于无等待. 无锁采用CAS(compare and swap)算法来处理线程冲突, 其原理如下 CAS原理 CAS包含3个参数CAS(V,E,N).V表示要更新的变量, E表示预期值, N表示新值. 仅当V值等于E值时, 才会将V的值设为N阅读全文
posted @ 2018-05-17 00:02 大道方圆 阅读(263) 评论(0) 编辑
摘要: 目录 基本原则 场景一: 批评时 场景二: 鼓励时 场景三: 委托任务时 场景四: 表扬时 场景五: 汇报和交流 场景六: 辅导与评价 基本原则 以积极的心态引导别人, 发掘组内成员闪光点. 主动积极时 我决定去 我可以控制自己的感受 我们试试其他的可能性 我可以想出更好的方案 我可以选择不同的风格阅读全文
posted @ 2018-05-09 00:31 大道方圆 阅读(209) 评论(2) 编辑
摘要: 本文暂不讲JMM(Java Memory Model)中的主存, 工作内存以及数据如何在其中流转等等, 这些本身还牵扯到硬件内存架构, 直接上手容易绕晕, 先从以下几个点探索JMM 原子性 有序性 可见性 指令重排 CPU指令重排 编译器优化重排 Happen-Before规则 CPU指令重排 编译阅读全文
posted @ 2018-05-06 22:31 大道方圆 阅读(265) 评论(0) 编辑
摘要: 目录 线程状态切换 终止线程(stop) 中断线程(interrupt) 挂起(suspend) 和 继续执行(resume) 等待线程结束(join) 和 谦让(yield) sleep 线程优先级 守护线程 线程的同步操作(synchronized, wait, notify) 线程状态切换 终阅读全文
posted @ 2018-05-03 23:38 大道方圆 阅读(287) 评论(1) 编辑