并发编程
文章平均质量分 89
null_zhouximin
这个作者很懒,什么都没留下…
展开
-
并发编程-线程池详解
并发编程-线程池详解线程池线程池优势线程池的实现原理线程池状态ThreadPoolExecutor 详解线程池的创建源码分析ScheduledThreadPoolExecutor详解线程池的创建提交任务方式源码分析线程池线程池优势重用存在的线程,减少线程创建,消亡的开销,提高性能提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。线程池的原创 2021-02-02 22:43:27 · 398 阅读 · 0 评论 -
底层源码分析-ConcurrentHashmap源码详解
底层源码分析-ConcurrentHashmap源码详解JDK7和JDK8 的差异JDK7保证并发安全的方法JDK8保证并发安全的方法JDK8 putVal()详解JDK8 transfer()详解JDK8 addCount()JDK8 fullAddCount()ConcurrentHashmap数据结构和实现原理JDK7JDK8重要域重要方法put()initTable()初始化函数transfer() 扩容方法helpTransfer()addCount()fullAddCount()JDK7和JD原创 2021-02-01 22:17:22 · 456 阅读 · 0 评论 -
并发编程-Atomic和Unsafe详解
并发编程-Atomic和Unsafe详解原子操作相关术语处理器如何实现原子操作处理器自动保证基本内存操作的原子性使用总线锁保证原子性使用缓存锁保证原子性Unsafe 使用解析Unsafe对象生成Unsafe功能介绍CAS相关Atomic使用原子更新基本类型类原子更新数组类原子更新引用类型原子更新字段类原子操作原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为”不可被中断的一个或一系列操作” 。在多处理器上实现原子操作就变得有点复杂。本文让我们一起来聊原创 2021-01-29 13:42:37 · 137 阅读 · 0 评论 -
并发编程-AQS应用类实现原理
并发编程-AQS应用类实现原理CountDownLatch重要函数CyclicBarrier应用场景CyclicBarrier 和 CountDownLatch的区别SemaphoreCountDownLatchCountDownLatch 允许一个或者多个线程等待其他线程完成操作。重要函数countDown()public void countDown() {//会调用 tryReleaseShared() sync.releaseShared(1); } pu原创 2021-01-29 00:04:01 · 186 阅读 · 0 评论 -
并发编程-阻塞队列BlockingQueue详解
并发编程-阻塞队列BlockingQueue详解概要队列数据结构常见的4种阻塞队列三级目录概要BlockingQueue,是java.util.concurrent 包提供的用于解决并发生产者 - 消费者问题的最有用的类,它的特性是在任意时刻只有一个线程可以进行take或者put操作,并且BlockingQueue提供了超时return null的机制,在许多生产场景里都可以看到这个工具的身影。队列数据结构队列实质就是一种存储数据的结构通常用链表或者数组实现一般而言队列具备FIFO先进先出的特原创 2021-01-28 13:42:05 · 357 阅读 · 0 评论 -
并发编程-AQS详解
并发编程-AQS详解解析:AbstractQueuedSynchronizer同步等待队列(CLH)获取锁的函数释放锁的函数条件等待队列等待函数唤醒函数解析:AbstractQueuedSynchronizer同步等待队列(CLH)AQS当中的同步等待队列也称CLH队列,CLH队列是Craig、Landin、Hagersten三人发明的一种基于双向链表数据结构的队列,是FIFO先入先出线程等待队列,Java中的CLH队列是原CLH队列的一个变种,线程由原自旋机制改为阻塞机制。head 指向的是一个原创 2021-01-28 13:19:02 · 689 阅读 · 0 评论 -
并发编程-AQS应用Lock详解
并发编程-AQS应用Lock详解ReentrantLock源码解析Lock()源码解析unLock()ReentrantLockReentrantLock是一种基于AQS框架的应用实现,是JDK中的一种线程并发访问的同步手段,它的功能类似于synchronized是一种互斥锁 可以保证线程安全。而且它具有比synchronized更多的特性,比如它支持手动加锁与解锁,支持加锁的公平性。AQS具备特性阻塞等待队列共享/独占公平/非公平可重入允许中断AQS内部维护属性volatile原创 2021-01-27 02:42:10 · 237 阅读 · 0 评论 -
并发编程-synchronized详解
并发编程-synchronized详解synchronized原理详解Monitor监视器锁对象的内存布局锁的膨胀升级过程(JDK1.5后的优化)二级目录三级目录synchronized原理详解synchronized底层原理synchronized是基于JVM 内置锁实现,通过 内部对象Monitor(监视器锁)实现,基于进入与退出Monitor对象实现方法与代码块同步,监视器锁的实现依赖底层操作系统的Mutex lock(互斥锁)实现,它是一个重量级锁性能较低。当然,JVM内置锁在1.5之后版原创 2021-01-27 00:46:56 · 344 阅读 · 0 评论 -
CPU缓存一致性协议MESI
CPU缓存一致性协议MESIjava代码执行流程硬件缓存锁定机制MESIMESI协议缓存状态MESI状态转换多核缓存协同操作单核读取双核读取修改数据同步数据缓存行伪共享MESI优化和他们引入的问题CPU切换状态阻塞解决存储缓存(Store Bufferes)Store BufferesStore Bufferes的风险硬件内存模型失效队列内存屏障java代码执行流程一个java类通过javac编译成字节码文件后会通过类加载子系统装载进元空间在堆中生成Class实例创建线程要执行的方法的字节码会原创 2021-01-26 22:19:27 · 522 阅读 · 0 评论 -
并发编程-JMM模型
并发编程-JMM模型什么是JMM模型主内存工作内存JMM的必要性数据同步的八大原子操作同步规则分析并发编程的可见性,原子性与有序性问题JMM如何解决原子性&可见性&有序性问题什么是JMM模型Java内存模型(Java Memory Model简称JMM)**是一种抽象的概念,**并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个工作内存(有些地原创 2021-01-26 00:03:19 · 214 阅读 · 0 评论 -
操作系统底层工作的整体认识
操作系统底层工作的整体认识冯诺依曼计算机模型详解计算机五大核心组成部分CPU指令CPU缓存结构操作系统内存管理执行空间保护进程与线程进程线程冯诺依曼计算机模型详解现代计算机模型是基于-冯诺依曼计算机模型计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令(机器码)的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来,再取出第二条指令,在控制器的指挥下完成规定操作。依此进行下去。直至遇到停止指令。程序与数据一样存贮,按程序编排的顺序,一步一步地原创 2021-01-25 22:58:22 · 172 阅读 · 0 评论