摘要:
环境 jdk version:jdk1.8.0_171 一、Executor接口执行器接口,也是最顶层的抽象核心接口, 分离了任务和任务的执行。 二、ExecutorService接口在Executor的基础上提供了执行器生命周期管理,任务异步执行等功能。在Executor的基础上增强了对任务的控制 阅读全文
摘要:
环境 jdk version:jdk1.8.0_171 一、CountDownLatchCountDownLatch是一个辅助同步器类,用来作计数使用,它的作用类似于生活中的倒数计数器,先设定一个计数初始值,当计数降到0时,将会触发一些事件,如火箭的倒数计时。初始计数值在构造CountDownLat 阅读全文
摘要:
环境 jdk version:jdk1.8.0_171 原子包不需要使用同步器,而是单纯的使用CAS+自旋实现同步效果,CAS主要通过Unsafe来实现。 一、基本类型(AtomicInteger, AtomicLong, AtomicBoolean)AtomicInteger是Integer类型的 阅读全文
摘要:
AQS(AbstractQueuedSynchronizer)框架提供了一套通用的机制来管理同步状态、阻塞/唤醒线程、管理同步队列。 一、同步机制AQS框架描述了一个什么样的锁? 1、锁的使用人AbstractOwnableSynchronizer父类里定义了一个字段-拥有锁的线程,以及相应的set 阅读全文
摘要:
本章做一下总览各种并发的实现方式,传统方式比较常见,在大并发场景下一般会使用JUC并发包,下面列了一张juc包概览图,每一类会在后面文章中详细介绍原理和使用。 一、传统的java线程并发支持 1、线程同步使用synchronized 2、线程通信使用wait、notify、notifyAll、joi 阅读全文
摘要:
(I)Java线程互斥原理之synchronized原理 从JDK5引入CAS原子操作,但没有对synchronized关键字做优化,而是增加了J.U.C.concurrent,concurrent包有更好的性能;从JDK6对synchronized的实现机制进行了较大调整,包括使用JDK5引进的C 阅读全文
摘要:
使用线程更好的提高资源利用率,但也会带来上下文切换的消耗,频繁的内核态和用户态的切换消耗,如果代码设计不好,可能弊大于利。 一、线程 进程是分配资源的最小单位,线程是程序执行的最小单位;线程是依附于进程的,一个进程可以生成多个线程,这些线程拥有共享的进程资源; 二、线程生命周期(相关API)1、5个 阅读全文
摘要:
一、计算机内存模型 针对计算机机器而言,操作系统、JVM程序等其他所有程序都需要遵循内存模型规范。1、CPU技术发展1.1 CPU缓存的出现CPU的发展快于内存条,CPU的运算速度越来越快,内存条的读写速度无法适应CPU的速度,那么就在CPU和内存条之间加上高速缓存来适配; (1)缓存有L1-一级缓 阅读全文
摘要:
一、时间单位与转换 1 秒(second)[s] = 1000 毫秒millisecond[ms]1 毫秒millisecond[ms] = 1000 微秒microsecond[us]1 微秒microsecond[us] = 1000 纳秒nanosecond[ns]1 纳秒nanosecond 阅读全文
摘要:
一、SPI机制 二、注解处理机制 三、版本差异 阅读全文