
多线程
架构魔方
这个作者很懒,什么都没留下…
展开
-
偏向锁,轻量级锁与重量级锁的区别与膨胀
一直被这三个锁的膨胀问题所困扰,不知道到底实在什么时候会有偏向锁升级到轻量级锁,什么时候由轻量级锁升级到重量级锁。找到好久,也没有找到简洁明了的答案。 综合多个方面的描述综合自己的理解,特地记录下来。但是也有可能理解有误。 先依然描述这三个锁是什么: 这里直接从《深入理解Java虚拟机》粘贴过来。偏向锁 Hotspot 的作者经过以转载 2017-07-11 10:18:59 · 472 阅读 · 1 评论 -
入门AQS锁 - Condition与LockSupport
转自http://www.jianshu.com/p/1add173ea703在第一章节中,我们已经初步接触了ReentrantLock独占锁与Condition接口,并且学习了ReentrantLock与Synchronized关键字的联系与区别,以及Condition接口中3个比较重要的方法的含义与用法。在本章节中,我们将对第一章节介绍的Condition接口进行更加深入的学习,从而理转载 2017-07-31 23:04:11 · 976 阅读 · 0 评论 -
Lock的await/singal 和 Object的wait/notify 的区别
转载http://www.cnblogs.com/alphablox/archive/2013/01/20/2868479.html在使用Lock之前,我们都使用Object 的wait和notify实现同步的。举例来说,一个producer和consumer,consumer发现没有东西了,等待,produer生成东西了,唤醒。线程consumer线程prod转载 2017-07-31 22:47:25 · 632 阅读 · 0 评论 -
JAVA中一个Lock锁中多个condition监视器的问题
https://yq.aliyun.com/ask/14319在一个同步程序中,如果定义了一个Lock锁,同时在这一个锁上创建两个condition监视器con1和con2,如果操作con1.signalAll(),那么唤醒的是Lock这个锁里全部等待的线程还是只唤醒被con1这个监视器await的线程呢?con1只是唤醒在con1这个对象上的阻塞队列里的对象.转载 2017-07-31 22:43:00 · 1162 阅读 · 0 评论 -
java中wait/notify机制
转自http://www.cnblogs.com/txdlf/p/5344122.html通常,多线程之间需要协调工作。例如,浏览器的一个显示图片的线程displayThread想要执行显示图片的任务,必须等待下载线程 downloadThread将该图片下载完毕。如果图片还没有下载完,displayThread可以暂停,当downloadThread完成了任务 后,再通知displa转载 2017-07-31 22:42:26 · 313 阅读 · 0 评论 -
AbstractQueuedSynchronizer同步队列与Condition等待队列协同机制
转自http://blog.youkuaiyun.com/tb3039450/article/details/69056169之前对AbstractQueuedSynchronizer(AQS)同步队列与Condition等待队列的功能一直不是很清晰,没太清楚地区分开二者的区别和联系,最近研究了一下分享出来。1.同步队列和等待队列简述AQS维护的队列是当前等待资源的队列。当前线程获取同转载 2017-07-31 22:31:13 · 500 阅读 · 1 评论 -
Java内存屏障和可见性
引言在多线程编程中,有的时候会看见如下的代码public class task{private boolean success;public void getResult(){ while(success==false){ doSomethind(); }}public void success(){ success=true;}}12345678910转载 2017-07-13 10:59:00 · 380 阅读 · 0 评论 -
聊聊高并发(三十五)Java内存模型那些事(三)理解内存屏障
原文 http://blog.youkuaiyun.com/iter_zc/article/details/42006811在聊聊高并发(三十三)从一致性(Consistency)的角度理解Java内存模型 我们说了硬件层提供了满足某些一致性需求的能力,Java内存模型利用了硬件层提供的能力指定了一系列的语法和规则,让Java开发者可以隔绝这种底层的实现专注于并发逻辑的开发。这篇我们来看看硬件层是如何提供转载 2017-07-12 10:22:40 · 311 阅读 · 0 评论 -
Java内存屏障和可见性
引言在多线程编程中,有的时候会看见如下的代码public class task{private boolean success;public void getResult(){ while(success==false){ doSomethind(); }}public void success(){ success=true;}}12345678910转载 2017-07-12 10:21:34 · 467 阅读 · 0 评论 -
Java并发之彻底搞懂偏向锁升级为轻量级锁
网上有许多讲偏向锁,轻量级锁的文章,但对偏向锁如何升级讲的不够明白,有些文章还相互矛盾,经过对jvm源码(biasedLocking.cpp)的仔细分析和追踪,基本升级过程有了一个清晰的过程,现将升级流程阐述如下: 因为偏向锁,锁住对象时,会写入对象头相应的标识,我们先把对象头(官方叫法为:Mark Word)的图示如下(借用了网友的图片): 通过上面的图转载 2017-07-11 10:50:27 · 10991 阅读 · 7 评论 -
线程重用——线程池的基本原理
为简单起见,线程池中只有一个线程:[java] view plain copy print?package com.xs.concurrent; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue;转载 2017-08-08 10:14:04 · 794 阅读 · 0 评论