并发
迷路剑客
弱小和无知不是生存的障碍,傲慢才是。
展开
-
Java-多线程-线程状态
Java-多线程-线程状态1 简介Java线程并不是和Linux线程完全对等的,每个Java线程拥有NEW(新建)、RUNNABLE(就绪)、BLOCKED(阻塞)、WAITING(等待)、TIMED WAITING(计时等待)、TERMINATED(终止)。Java线程调度属于抢占式调度,线程竞争CPU时间分片来执行,一个线程运行几十毫秒中就处于RUNNING状态,而时间片用完了被剥夺CP...原创 2020-04-01 22:56:48 · 201 阅读 · 0 评论 -
Java-并发-SynchronousQueue
转载声明本文大量内容系转载自以下文章,有删改,并参考其他文档资料加入了一些内容:SynchronousQueue的使用作者:零度anngle转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。摘要在研究ThreadPool源码的时候,看到Executors.newScheduledThreadPool用了SynchronousQueue做接收...转载 2019-09-04 16:47:35 · 436 阅读 · 0 评论 -
Java-并发-线程池
Java-并发-线程池摘要本文简要介绍线程池,浅析其原理。0x01 基本概念1.1 Java线程池简介Java多线程环境中,使用线程池是是否必要的。在《阿里巴巴Java编码规范v1.4.0》之中,就可以看到以下描述:【强制】线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。说明:使用线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源的开销,解决资源不足的问题。如...原创 2019-02-13 11:17:06 · 406 阅读 · 0 评论 -
Java-多线程-wait/notify
Java-多线程-wait/notify摘要wait notify 还有个notifyAll都是线程通信的常用手段。本文会简要介绍其底层实现原理,并和Condition的await和signal方法作对比。有一个先导概念就是对象锁和类锁,他们其实都是对象监视器Object Monitor,只不过类锁是类对象的监视器,可以看另一篇文章:Java-并发-锁-synchronized之对象锁和类...原创 2018-12-21 17:47:51 · 423 阅读 · 0 评论 -
Java-并发-锁-synchronized
Java-并发-锁-synchronized摘要本文会详细说下synchronized的底层实现原理。0x01 基本概念每次只能有一个线程进入临界区保证临界区内共享变量的可见性和有序性成功进入synchronized区域的线程可以拿到对象的Object-Monitor。具体有3种用法,作用域不同,在后面例子中介绍。对于拿到锁的线程来说,同一个对象的synchronized具有可重入...原创 2018-12-21 17:15:40 · 503 阅读 · 0 评论 -
Java-并发-Condition
Java-并发-Condition摘要本文介绍Condition,需要配合AQS使用,他也实现了一套类似wait/notify的逻辑。本文会简单分析其实现。0x01 基本概念Condition类其实是位于java.util.concurrent.locks的一个接口类。他的一个常用实现类是AQS的非静态内部类ConditionObject:public class ConditionOb...原创 2018-12-21 14:47:43 · 376 阅读 · 0 评论 -
Java-并发-锁-ReentrantLock
Java-并发-锁-ReentrantLock摘要ReentrantLock是使用最广的、最出名的AQS(AbstractQueuedSynchronizer)系列的可重入锁。本文会分析他的lock, unlock等重要方法,还涉及公平/非公平概念对比,及对比synchronized。0x01 基本概念ReentrantLock是使用最广的、最出名的AQS(AbstractQueuedSy...原创 2018-12-21 14:31:49 · 253 阅读 · 0 评论 -
Java-并发-锁-ReadWriteLock
Java-并发-锁-ReadWriteLock摘要现在大家开发程序,大多是在多线程场景,就会用到各种锁。但其实往往读和读之间是不冲突的,是无状态无修改的,不应该互相互斥。我们往往只需在读写或者写与写之间互斥即可。在JDK中就直接提供了一个ReadWriteLock,本文会介绍其基本概念及分析源码。0x01 基本概念ReadWriteLock的互斥关系如下表:读写读...原创 2018-12-21 10:59:25 · 811 阅读 · 0 评论 -
LockFree思想
LockFree思想0x01 摘要近期看一些源码,会有一些注释是LockFree。这到底啥玩意儿?之前我也不知道啊,遂赶紧上网查之,总结了一些东西作为记录,与大家分享。0x02 LockFree2.1 LockFree概念先上一张神图:由上图可以看出,LockFree程序必须满足三个条件:多线程共享内存不能彼此阻塞(死锁)具体来说,如果一个程序是LockFree的,则在运...原创 2018-12-09 18:33:37 · 2127 阅读 · 0 评论 -
Java-并发-关于锁的一切
Java-并发-LockLike摘要本文简要说下Java中的各种锁和类锁机制,还有一些相关的如sleep/yield join等,分析其原理,做简单比较。0x01 Thread相关方法1.1 sleep代码如下 /** * 使得当前调用该方法的线程暂停指定时长,具体取决于系统计时器和调度程序的精度和准确性。 * 注意该方法不会放弃对象锁。 * * @param mil...原创 2018-12-14 18:43:50 · 979 阅读 · 1 评论 -
高并发方案一览
高并发方案一览转载声明:本文系转载自以下两篇文章:大话程序猿眼里最全的高并发,快收藏!作者: SFLYQ来源:菜鸟架构转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。摘要高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达...转载 2018-12-12 16:41:49 · 384 阅读 · 0 评论 -
Java-并发-锁-LockSupport
Java-并发-锁-LockSupport0x01 摘要LockSupport是用来创建锁和其他同步类的基本线程阻塞原语,他的两个主要方法park()和 unpark()的作用分别是阻塞线程和解除阻塞线程。本文简要分析下他的源码。0x02 源码解析2.1 类定义和构造方法// 该类很耿直,就是个独立的 没有什么乱七八糟的继承关系public class LockSupport { ...原创 2018-11-29 20:30:36 · 390 阅读 · 2 评论 -
Java进阶(二)当我们说线程安全时,到底在说什么
Java进阶(二)当我们说线程安全时,到底在说什么转载声明:本文系转载自技术世界:作者: Jason Guo转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。0x01 摘要提到线程安全,可能大家的第一反应是要确保接口对共享变量的操作要具体原子性。实际上,在多线程编程中我们需要同时关注可见性、顺序性和原子性问题。本篇文章将从这三个问题出...转载 2018-11-28 23:27:20 · 183 阅读 · 0 评论 -
Java-并发-CAS
Java-并发-CAS0x01 摘要本文主要讲讲AQS(AbstractQueuedSynchronizer)中大量使用的CAS,以及著名的ABA问题。0x02 CAS基本概念乐观锁在Java中的一个重要实现就是CAS,全称为 Compare and Swap,就是在内存级别比较和原子性地替换值。在Java里,是用的sun.misc.Unsafe类来实现了很多相关的native修饰的CA...原创 2018-11-26 00:44:18 · 354 阅读 · 0 评论 -
Java-并发-队列-PriorityBlockingQueue
Java-并发-队列-PriorityBlockingQueue0x01 摘要PriorityBlockingQueue是优先级阻塞队列,本文简要分析下。0x02 简介PriorityBlockingQueue特点如下:支持优先级无界阻塞队列PriorityBlockingQueue 是无界队列,不会“队满”。实际当到达队列最大值后(Integer.MAX_VALUE - 8,减8...原创 2018-11-24 15:57:32 · 666 阅读 · 0 评论 -
Java-并发-队列-阻塞和非阻塞队列总结
转载声明:本文系转载自以下文章:Java 并发 — 阻塞队列总结作者: thgreat0x01 摘要本文会对java并发包内的常用重要阻塞队列进行总结。0x02 ArrayBlockingQueueArrayBlockingQueue 特点:用数组实现有界阻塞队列需要指定队列的大小,它不会像ArrayList那样自动扩容。FIFOArrayBlockingQueu...转载 2018-11-24 01:14:39 · 1120 阅读 · 0 评论 -
Java-并发-容器-ConcurrentHashMap
Java-容器-并发-ConcurrentHashMap0x01 摘要本文讲讲Java中使用率极高的线程安全类ConcurrentHashMap未完成0x02 为什么线程安全0x03 源码解析3.1 初始化3.2 放入3.3 取出public V get(Object key) { Node&原创 2018-11-09 14:31:38 · 2031 阅读 · 1 评论 -
Java-并发-锁-synchronized之对象锁和类锁
Java学习-锁-synchronized之对象锁和类锁0x01 摘要synchronized是java中最常用的一种锁机制,本篇文章主要介绍他的两种用途:类锁和对象锁。0x02 对象锁synchronized作为对象锁时,用在非静态方法或非静态对象上,下面是示例: /** * 对象锁 */ public synchronized void nonStati...原创 2018-10-22 23:57:28 · 533 阅读 · 0 评论 -
Java-并发-自己实现阻塞队列
并发学习-自己实现阻塞队列0x01 摘要其实BlockingQueue简单来说就是一个put锁,一个take锁,还有一个放入的元素形成的Node队列。这篇文章,我们通过写代码实现一个简易的阻塞队列来进一步加深对阻塞队列的印象和理解。 0x02 CustomBlockingQueue在这里,我们通过代码简单实现了一个阻塞队列的基本功能: /** * Cr...原创 2018-09-12 22:20:27 · 1219 阅读 · 0 评论