
并发编程
AE86上山啦
这个作者很懒,什么都没留下…
展开
-
线程池ThreadPoolExecutor核心参数
我们先来看一下ThreadPoolExecutor构造器源码/** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters. * * @param corePoolSize the number of threads to keep in the po...原创 2019-10-24 10:38:31 · 324 阅读 · 0 评论 -
并发编程——如何减少上下文切换
无锁并发编程:例如,将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据,这样就可以避免使用锁; CAS算法; 使用最少线程:避免创建不必要的线程; 协程:在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换。...原创 2019-04-15 20:42:34 · 383 阅读 · 0 评论 -
偏向锁
在大多数情况下,锁不存在多线程竞争,而且往往是由一个线程多次获得,为了使线程获得锁的代价更低,引入了偏向锁。工作原理偏向锁,顾名思义,它会偏向最先获得它的线程,当一个线程访问同步代码块获得锁时,会在对象头和栈帧记录里存储锁偏向的线程ID,当这个线程再次进入同步代码块时,就不需要CAS操作来加锁了,只要测试一下对象头里是否存储着指向当前线程的偏向锁。如果测试成功,则表明该线程已经获得了锁,如...原创 2019-04-27 15:26:03 · 740 阅读 · 0 评论 -
轻量级锁
轻量级锁不是为了代替重量级锁,它的本意是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗。加锁首先,JVM在当前线程栈帧中创建用于存储锁记录的空间; 将对象头中的Mark Word复制到锁记录中,称为Displaced Mark Word; 线程尝试使用CAS将对象头中的Mark Word替换为指向锁记录的指针,成功则代表获得锁,失败表示其他线程竞争锁,当前...原创 2019-04-27 16:05:32 · 2572 阅读 · 0 评论 -
Java中Synchronized的用法
本文转自原文:http://blog.youkuaiyun.com/luoweifu/article/details/46613015作者:luoweifu《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下Java线程同步中的一个重要的概念synchronized.synchr...转载 2019-04-23 14:36:12 · 161 阅读 · 0 评论