并发编程
编程南山下
这个作者很懒,什么都没留下…
展开
-
高频面试题:秒杀系统设计
背景最近面试面得心力交瘁,由于没有高并发架构的实际项目经验,经常是在场景设计的面试题目上面栽跟头。上次就被问到了关于秒杀系统的设计,竟无语凝噎。痛定思痛,找了一套秒杀系统的视频看了一遍,总算有所理解。做个笔记,希望能帮到各位。秒杀系统设计库存预热提前把商品的库存加载到Redis中去,让整个流程都在Redis里面去做,然后等秒杀结束了,再异步的去修改库存就好了。用户下单为了提升下单速度,我们将订单数据存入到redis缓存中,如果用户支付了,再将redis中的订单存到Mysql中,并清空原创 2020-10-16 14:33:44 · 950 阅读 · 1 评论 -
JUC常用到的类
JUC(java.util.concurrent)并发包中包含了许多并发编程中需要用到的类。锁,如ReentratLock,ReadWriteLock。 ReentrantLock重入锁,可以替代synchronized使用,并且有更多强大的功能,比如说可以中断锁,trylock,超时等待,公平锁等。 ReadWriteLock,读写锁,更是对读和写进行了锁分离,在读多写少的场景下,能极大的提高程序的性能。 原子类 基本类,数组类,引用类等。AtomicInteger比较常用。使用原子类,可以不原创 2020-08-28 17:51:03 · 1491 阅读 · 0 评论 -
Future和CompletableFuture的用法和区别
Future的用法多线程场景时,一般是实现runnable接口,覆写run方法,返回值是void类型,因此这种情况下不需要线程的返回结果。如果需要线程的返回结果,就需要用callable接口来代替了。callable用法和runnable一样,只不过覆写的是call方法,该方法有一个泛型返回值类型,可以根据需要指定。那么何时到Future呢?当你启动callable线程时,就可以声明一个Future对象,用于接收返回结果。Futrue可以监视目标线程调用call的情况,当你调用Future...原创 2020-08-28 13:31:25 · 9748 阅读 · 2 评论 -
阻塞队列LinkedBlockingQueue 和 并发队列ConcurrentLinkedQueue 的用法
目录前言阻塞队列LinkedBlockingQueue并发队列ConcurrentLinkedQueue总结前言在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。注:什么叫线程安全?这个首先要明确。线程安原创 2020-08-27 17:47:20 · 276 阅读 · 0 评论 -
JDK内置锁
前言java并发编程中,为了保证线程安全,经常会用到jdk的内置锁。jdk有三种内置锁。synchronized同步机制 ReentrantLock重入锁 ReadWriteLock读写分离锁synchronized同步机制synchronized有如下三种用法。// 1.代码块同步,锁对象需要显式指定public void doSomeThing() { synchronized(lock) { // do some thing }}// 2转载 2020-08-26 17:45:21 · 660 阅读 · 0 评论