并发编程
苏怡仙-Hart
这个作者很懒,什么都没留下…
展开
-
【并发编程】-锁的升级流程
偏向锁状态 一、检查MarkWord里面是不是放的自己的ThreadId,如果是,表示当前线程处于“偏向锁” 轻量级锁状态 二、如果MarkWord里不是自己的ThreadId,锁升级,用CAS执行切换,新的线程根据MarkWord里面现有的ThreadId,通知之前线程暂停,之前线程将MarkWord的内容置为空。 三、两个线程都把锁对象的HashCode复制到自己新建的用于存储锁的记录空间,接着开始通过CAS操作,把锁对象的MarkWord的内容修改为自己新建的记录空间的地址的方式竞争MarkWor.原创 2020-05-17 20:10:19 · 142 阅读 · 0 评论 -
【并发编程】-volatile关键字
使一个变量在多个线程间可见 public class T { /*volatile*/ boolean running=true;//volatile 通知其他线程值改变了 void m(){ System.out.println("m start"); while(running){ } System.out.pri...原创 2020-02-16 20:19:43 · 114 阅读 · 0 评论 -
【并发编程】-并发容器
在上一篇文章简单了解了一下线程池。自定义线程池有5个参数,其中第五个就是选择并发容器。而Java帮我们封装好的几个线程池,也都用了相应的并发容器,接下来看一下Java中有哪些并发容器呢? ConcurrentMap、CopyOnWriteArrayList、SynchronizedList、ConcurrentLinkedQueue、LinkedBlockingQueue、ArrayBlock...原创 2020-01-15 16:04:12 · 158 阅读 · 1 评论 -
【并发编程】-Java线程池
在开发过程中经常会遇到并发量比较高的代码,可以用多线程去解决的。除了我们常用的自定义线程池ThreadPoolExecutor还有几种Java封好的:FixedThreadPool(固定个数线程池)、CachedThreadPool(弹性线程池)、SingleThreadExecutor(单线程线程池)、ScheduleThreadPool(定时器线程池)、WorkStealingPool(任务...原创 2020-01-14 16:48:58 · 152 阅读 · 2 评论