高并发
清风追梦enjoy
无论什么时候,都要清醒地认识自己,并始终不忘努力。
展开
-
CountDownLatch(闭锁)、Semaphore(信号量)、CyclicBarrier(回环栅栏)
一、CountDowLatch(闭锁)(倒计数锁存器) CountDownLatch类位于java.util.concurrent包下,在完成某些运算时,只有其他所有线程的运算全部完成,当前运算才继续执行。 利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能。final CountD...原创 2019-11-21 20:38:35 · 423 阅读 · 0 评论 -
高并发架构系列:Redis缓存和MySQL数据一致性方案详解
需求起因在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。这个业务场景,主要是解决读数据从Redis缓存,一般都是按照下图的流程来进行业务操作。读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存(Redis)和数据库(MyS...原创 2018-12-20 17:07:02 · 675 阅读 · 0 评论 -
Java StreamAPI简析及示例
Java StreamAPIStream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对...原创 2018-11-17 20:35:15 · 275 阅读 · 0 评论 -
线程池原理-高并发
1.FixedThreadPool 2.CachedThreadPool 弹性有任务就会开启新线程 默认线程等待时间60s3.SingleThreadPool 单线程只有一个线程 保证线程执行先后顺序4.ScheduledThreadPool 定时任务5.WorkStealingPool 工作窃取6. ForkJoinPool fork分叉 join合并-----...原创 2018-11-17 00:55:30 · 412 阅读 · 0 评论 -
JAVA线程池-高并发
ExecutorExecutorService接口 execute 执行无返回值的任务 submit 执行有返回值的任务Callable 约等于 RunnableExecutorsThreadPool 任务队列 结束任务队列Future parallelComputing线程池并行计算1.FixedThreadPool2.CachedThreadPool...原创 2018-11-15 01:03:01 · 526 阅读 · 0 评论 -
ReentrantLock的使用-高并发
1. * 使用ReentrantLock可以代替Synchronized * 需注意:必须手动释放锁(重要!!!!) * 使用synchronized如果遇到异常,jvm会自动释放锁 * 当时lock会手动释放锁,因此经常在finally中进行锁的释放2. * 与Synchronized区别: * 使用ReentrantLock可以进行尝试锁定 tryLock() * 这样无...原创 2018-11-09 01:23:04 · 1671 阅读 · 0 评论 -
java实现火车票售卖-高并发
实现1: * 售卖火车票实现1: * 用ArrayList * * 产生的问题: * 重复销售 * 超量销售 * * 原因: * 1.size不是原子的 * 2.remove不是原子的 * 3.判断+操作 不是原子的 package sell_ticket_test;/** * 售卖火车票实现1: * 用ArrayList * * 产生的问题:...原创 2018-11-11 18:50:14 · 4755 阅读 · 0 评论 -
单例模式-5种实现方式
单例模式就是说系统中对于某类的只能有一个对象,不可能出来第二个。单例模式也是23中设计模式中在面试时少数几个会要求写代码的模式之一。主要考察的是多线程下面单例模式的线程安全性问题。1.多线程安全-单例模式实例一(不使用同步锁) package singleton_test;/** * 1.多线程安全单例模式实例一(不使用同步锁) * @author x1c * *...原创 2018-11-10 19:00:42 · 536 阅读 · 0 评论 -
并发容器
1. ConcurrentHashMap* 本方法测试点(基于jdk1.8): * ConcurrentHashMap * ConcurrentSkipListMap * Hashtable * HashMap * 执行时间对比,Map<String,String> 而Set<String>同理 * 理解: * SkipList跳...原创 2018-11-12 23:41:07 · 158 阅读 · 0 评论 -
生产者和消费者-高并发(面试题)
面试题:写一个固定容量同步容器,拥有put和get方法,以及getCount方法,能够支持,2个生产者线程及10个消费者线程的阻塞调用(经常问!)-----------------------------------------------------------------------------1. 使用synchronized、wait和notify/notifyall来实现...原创 2018-11-07 01:29:01 · 3100 阅读 · 0 评论 -
高并发编程-synchronized的使用
淘宝面试题:实现一个容器,提供两个方法,add,size写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束-------------------------------------------------------------------------------------------------------1.一般写法...原创 2018-10-31 01:35:20 · 224 阅读 · 0 评论 -
高并发编程
高并发需掌握点第一部分:synchronizer 同步器第二部分:jdk的同步容器 concurrentMap concurrentList CopyOnWriteArrayList blockingQueue 等第三部分:ThreadPool executor ...原创 2018-11-01 00:44:52 · 267 阅读 · 1 评论 -
高并发编程-synchronized的使用2
1. 同步方法和非同步方法可以同时调用2. 对业务写方法加锁,对业务读方法不加锁 ==》容易产生脏读问题(dirty read) 解决办法:CopyOnWrite 写时复制 牺牲写性能 增加读性能3. 一个同步方法可以调用另外一个同步方法,一个线程已经拥有某个对象的锁,再次申请的时候仍然会得到该对象的锁 也就是说synchronized获得的锁时可以重入的4. 程序在执...原创 2018-11-01 00:29:52 · 197 阅读 · 0 评论