随笔分类 -  Java高并发专题

摘要:电商大家都用过吧,下单后若未支付,通常都有一段支付倒计时,比如15分钟,若时间到了之后,还未支付的,订单将被关闭,库存将被释放。 这种业务就需要用到延迟队列的功能,将任务丢到延迟队列、设置一个延迟时间、回调函数,到了时间之后,延迟队列将回调指定的函数消费指定的任务。 下面代码是一个通用的延迟队列的实 阅读全文
posted @ 2022-05-04 23:54 程序员小明1024 阅读(310) 评论(0) 推荐(0) 编辑
摘要:线程的状态有哪几种?他们之间是如何转换的? 目录 1、线程状态分类 线程一共有六种状态,分别为New、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED,同一时刻只有一种状态,通过线程的getState方法可以获取线程的状态。 2、状态详解 Threa 阅读全文
posted @ 2022-05-04 23:45 程序员小明1024 阅读(94) 评论(0) 推荐(0) 编辑
摘要:目录 1. 前言 在我的项目中有这样一个场景:页面链接是同一个,但是可以有多个子页面,不同的时间要展示不同子页面,类似一个页面排期功能。也许你们觉得要实现这个功能比较简单,实现过程为:获取所有子页面的生效时间,对每个生效时间点创建一个定时器,每个定时器执行内容为使用新的子页面进行渲染。对于单个或者少 阅读全文
posted @ 2022-05-04 23:40 程序员小明1024 阅读(725) 评论(0) 推荐(0) 编辑
摘要:环境:jdk1.8。 今天群里面刚有有人在问这块的东西,那就拿出来说一下。 本文主要用juc中的ReentrantLock来说一下公平锁和非公平锁的东西。 先理解一下什么是公平锁、非公平锁?公平锁和非公平锁体现在别人释放锁的一瞬间,如果前面已经有排队的,新来的是否可以插队,如果可以插队表示是非公平的 阅读全文
posted @ 2022-05-04 23:37 程序员小明1024 阅读(44) 评论(0) 推荐(0) 编辑
摘要:本文主要内容 4种方式实现计数器功能,对比其性能 介绍LongAdder 介绍LongAccumulator 来个需求 一个jvm中实现一个计数器功能,需保证多线程情况下数据正确性。 我们来模拟50个线程,每个线程对计数器递增100万次,最终结果应该是5000万。 我们使用4种方式实现,看一下其性能 阅读全文
posted @ 2022-05-04 23:29 程序员小明1024 阅读(77) 评论(0) 推荐(0) 编辑
摘要:java高并发系列已经学了不少东西了,本篇文章,我们用前面学的知识来实现一个需求: 在一个线程中需要获取其他线程的执行结果,能想到几种方式?各有什么优缺点? 结合这个需求,我们使用6种方式,来对之前学过的知识点做一个回顾,加深记忆。 方式1:Thread的join()方法实现代码: package 阅读全文
posted @ 2022-05-04 23:27 程序员小明1024 阅读(97) 评论(0) 推荐(0) 编辑
摘要:目录CompletableFuture是java8中新增的一个类,算是对Future的一种增强,用起来很方便,也是会经常用到的一个工具类,熟悉一下。 CompletionStage接口 CompletionStage代表异步计算过程中的某一个阶段,一个阶段完成以后可能会触发另外一个阶段一个阶段的计算 阅读全文
posted @ 2022-05-04 23:25 程序员小明1024 阅读(82) 评论(0) 推荐(0) 编辑
摘要:本文内容 日志有什么用? 日志存在的痛点? 构建日志系统 日志有什么用? 系统出现故障的时候,可以通过日志信息快速定位问题,修复bug,恢复业务 提取有用数据,做数据分析使用 本文主要讨论通过日志来快速定位并解决问题。 日志存在的痛点 先介绍一下多数公司采用的方式:目前比较流行的是采用springc 阅读全文
posted @ 2022-05-04 23:11 程序员小明1024 阅读(175) 评论(0) 推荐(0) 编辑
摘要:电商接口案例讲解电商app都有用过吧,商品详情页,需要给他们提供一个接口获取商品相关信息: 商品基本信息(名称、价格、库存、会员价格等)商品图片列表商品描述信息(描述信息一般是由富文本编辑的大文本信息) 数据库中我们用了3张表存储上面的信息: 商品基本信息表:t_goods(字段:id【商品id】、 阅读全文
posted @ 2022-05-04 20:53 程序员小明1024 阅读(361) 评论(0) 推荐(0) 编辑
摘要:本文内容 了解JUC常见集合,学会使用 ConcurrentHashMap ConcurrentSkipListMap ConcurrentSkipListSet CopyOnWriteArraySet 介绍Queue接口 ConcurrentLinkedQueue CopyOnWriteArray 阅读全文
posted @ 2022-05-04 20:49 程序员小明1024 阅读(126) 评论(0) 推荐(0) 编辑
摘要:本文内容 掌握Queue、BlockingQueue接口中常用的方法 介绍6中阻塞队列,及相关场景示例 重点掌握4种常用的阻塞队列 Queue接口 队列是一种先进先出(FIFO)的数据结构,java中用Queue接口来表示队列。 Queue接口中定义了6个方法: public interface Q 阅读全文
posted @ 2022-05-04 20:39 程序员小明1024 阅读(63) 评论(0) 推荐(0) 编辑
摘要:本文内容 需要解决的问题介绍ThreadLocal介绍InheritableThreadLocal 需要解决的问题 我们还是以解决问题的方式来引出ThreadLocal、InheritableThreadLocal,这样印象会深刻一些。 目前java开发web系统一般有3层,controller、s 阅读全文
posted @ 2022-05-04 20:35 程序员小明1024 阅读(39) 评论(0) 推荐(0) 编辑
摘要:本文主要内容 JUC中的原子类介绍 介绍基本类型原子类 介绍数组类型原子类 介绍引用类型原子类 介绍对象属性修改相关原子类 预备知识 JUC中的原子类都是都是依靠volatile、CAS、Unsafe类配合来实现的,需要了解的请移步: volatile与Java内存模型 java中的CAS JUC底 阅读全文
posted @ 2022-05-04 20:27 程序员小明1024 阅读(37) 评论(0) 推荐(0) 编辑
摘要:本文主要内容 基本介绍、 通过反射获取Unsafe实例 Unsafe中的CAS操作 Unsafe中原子操作相关方法介绍 Unsafe中线程调度相关方法 park和unpark示例 Unsafe锁示例 Unsafe中保证变量的可见性 Unsafe中Class相关方法 示例:staticFieldOff 阅读全文
posted @ 2022-05-04 20:20 程序员小明1024 阅读(37) 评论(0) 推荐(0) 编辑
摘要:本文主要内容 从网站计数器实现中一步步引出CAS操作介绍java中的CAS及CAS可能存在的问题悲观锁和乐观锁的一些介绍及数据库乐观锁的一个常见示例使用java中的原子操作实现网站计数器功能 我们需要解决的问题需求:我们开发了一个网站,需要对访问量进行统计,用户每次发一次请求,访问量+1,如何实现呢 阅读全文
posted @ 2022-05-04 20:18 程序员小明1024 阅读(53) 评论(0) 推荐(0) 编辑
摘要:本文内容 ExecutorCompletionService出现的背景介绍CompletionService接口及常用的方法介绍ExecutorCompletionService类及其原理示例:执行一批任务,然后消费执行结果示例【2种方式】:异步执行一批任务,有一个完成立即返回,其他取消 需要解决的 阅读全文
posted @ 2022-05-04 20:14 程序员小明1024 阅读(32) 评论(0) 推荐(0) 编辑
摘要:本文主要内容 介绍Executor框架相关内容介绍Executor介绍ExecutorService介绍线程池ThreadPoolExecutor及案例介绍定时器ScheduledExecutorService及案例介绍Excecutors类的使用介绍Future接口介绍Callable接口介绍Fu 阅读全文
posted @ 2022-05-04 20:11 程序员小明1024 阅读(68) 评论(0) 推荐(0) 编辑
摘要:本文主要内容 什么是线程池 线程池实现原理 线程池中常见的各种队列 自定义线程创建的工厂 常见的饱和策略 自定义饱和策略 线程池中两种关闭方法有何不同 扩展线程池 合理地配置线程池 线程池中线程数量的配置 什么是线程池 大家用jdbc操作过数据库应该知道,操作数据库需要和数据库建立连接,拿到连接之后 阅读全文
posted @ 2022-05-04 20:01 程序员小明1024 阅读(41) 评论(0) 推荐(0) 编辑
摘要:本文主要内容 介绍CyclicBarrier6个示例介绍CyclicBarrier的使用对比CyclicBarrier和CountDownLatch CyclicBarrier简介CyclicBarrier通常称为循环屏障。它和CountDownLatch很相似,都可以使线程先等待然后再执行。不过C 阅读全文
posted @ 2022-05-04 19:58 程序员小明1024 阅读(50) 评论(0) 推荐(0) 编辑
摘要:本篇内容 介绍CountDownLatch及使用场景提供几个使用示例介绍CountDownLatch的使用手写一个并行处理任务的工具类 思考一个需求假如有这样一个需求,当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有的sheet都 阅读全文
posted @ 2022-05-04 19:53 程序员小明1024 阅读(40) 评论(0) 推荐(0) 编辑