摘要: 本文关注以下几点内容: 基本上本文把以上几点都说清楚了,我假设读者看过上一篇文章中对 AbstractQueuedSynchronizer 的介绍,当然如果你已经熟悉 AQS 中的独占锁了,那也可以直接看这篇。各小节之间基本上没什么关系,大家可以只关注自己感兴趣的部分。 公平锁和非公平锁 Condi 阅读全文
posted @ 2019-01-25 12:17 He_quotes 阅读(153) 评论(0) 推荐(0) 编辑
摘要: BlockingQueue 开篇先介绍下 BlockingQueue 这个接口的规则,后面再看其实现。 首先,最基本的来说, BlockingQueue 是一个先进先出的队列(Queue),为什么说是阻塞(Blocking)的呢?是因为 BlockingQueue 支持当获取队列元素但是队列为空时, 阅读全文
posted @ 2019-01-25 12:14 He_quotes 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 什么是可重入锁? ReentrantLock是可重入锁,什么是可重入锁呢?可重入锁就是当前持有该锁的线程能够多次获取该锁,无需等待。可重入锁是如何实现的呢?这要从ReentrantLock的一个内部类Sync的父类说起,Sync的父类是AbstractQueuedSynchronizer(后面简称A 阅读全文
posted @ 2019-01-24 17:30 He_quotes 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 一、Condition的概念 介绍 回忆 synchronized 关键字,它配合 Object 的 wait()、notify() 系列方法可以实现等待/通知模式。 对于 Lock,通过 Condition 也可以实现等待/通知模式。 Condition 是一个接口。Condition 接口的实现 阅读全文
posted @ 2019-01-24 15:23 He_quotes 阅读(145) 评论(0) 推荐(0) 编辑
摘要: Java中线程的状态分为6种。 1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start() 阅读全文
posted @ 2019-01-23 20:23 He_quotes 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 同步工具类,通常利用他们的特性来构建并发安全的类. 常用的同步工具类有: 信号量 闭锁 栅栏 FutureTask 信号量(Semaphore) Java的信号量实际上就是基于操作系统的信号量来实现的. 信号量的原理可以参考《互斥的底层实现》关于信号量的描述。简而言之,信号量是用来控制同时访问某个特 阅读全文
posted @ 2019-01-23 11:25 He_quotes 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 转载 http://www.importnew.com/26035.html 最近在做接口限流时涉及到了一个有意思问题,牵扯出了关于concurrentHashMap的一些用法,以及CAS的一些概念。限流算法很多,我主要就以最简单的计数器法来做引。先抽象化一下需求:统计每个接口访问的次数。一个接口对 阅读全文
posted @ 2019-01-22 22:24 He_quotes 阅读(315) 评论(0) 推荐(0) 编辑
摘要: Java7 HashMap 数组+链表 Java7 ConcurrentHashMap Segment数组+HashEntry数组链表+ReenTrantLock分段锁 Java8 HashMap 链表Node数组+红黑树TreeNode数组(链表大于8时转换) Java8 ConcurrentHa 阅读全文
posted @ 2019-01-21 18:17 He_quotes 阅读(146) 评论(0) 推荐(0) 编辑
摘要: HashTable 底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsize = olesize*2+1 计算index的方法: 阅读全文
posted @ 2019-01-21 17:08 He_quotes 阅读(135) 评论(0) 推荐(0) 编辑
摘要: MySQL复制概述 简单来说就是保证主服务器(Master)和从服务器(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从Master把修改的数据同步过来(有一定的延迟),通过这种方式来保证数据的一致性,就是Mysql复制 Mysql 复制能解决什么问题 一、高可用和故障切换 阅读全文
posted @ 2019-01-02 14:31 He_quotes 阅读(2952) 评论(0) 推荐(0) 编辑