
技术-并发类
文章平均质量分 69
陈晓慧_
若转载原创,请知悉本人。。
展开
-
跟我学Spring之自定义bean容器提升代码可读性
转发大佬的文章Mark以便于学习链接请见:跟我学Spring之自定义bean容器提升代码可读性开发中经常有这样的场景:根据某个类型标识走不同的业务逻辑,通常我们会使用if(type.equals(xxxxx)) 或者 switch语句来进行逻辑处理。这样做当然是没什么问题的。当业务逻辑变得越来越复杂,类型标识增多之后,难免会出现if判断增加,或者switch case分支变多,这样的代码往往会过于冗长,代码重复性较大,或者说逼格不够高。本文介绍一种基于自定义Bean容器的开发方式..转载 2021-10-27 11:48:47 · 271 阅读 · 0 评论 -
swagger注释API :@ApiModel
API详细说明注释汇总作用范围 API 使用位置 对象属性 @ApiModelProperty 用在出入参数对象的字段上 协议集描述 @Api 用于controller类上 协议描述 @ApiOperation 用在controller的方法上 Response集 @ApiResponses 用在controller的方法上 Response @ApiResponse 用在 @ApiResponses里边转载 2021-02-18 18:51:26 · 877 阅读 · 0 评论 -
【死锁】死锁编码及定位分析
死锁是什么?产生死锁的主要原因死锁是指两个或者了两个以上的进行在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉那它们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。产生死锁的原因:1.系统资源不足;2.进程运行推进的顺序不合适;3.资源分配不当;通过一个小得脉进行分析怎么定位死锁,以及具体原因package com.neu.controller.study;import j原创 2021-01-19 09:37:17 · 288 阅读 · 0 评论 -
【Synchronized和Lock】Synchronized和lock有什么区别?用新的lock有什么好处?举例说说
1.原始构成Synchronized是关键字,属于jvm层面Monitorenter(底层是monitor对象来完成,其实wait/notify等方法也依赖于monitor对象只有在同步块或者方法中才能调用wait/notify等方法),主要是获取监视器锁Monitorexit主要是释放监视器锁。Lock是具体类(java.util.concurrent.locks.lock)是api层面的锁 2.使用方法Synchronized不需要用户去手动释放锁,当sych代码执...原创 2021-01-18 10:52:58 · 228 阅读 · 0 评论 -
【线程池《一》】线程池的基本原理,看完就懂了
1. 为什么要用线程池降低资源消耗。通过重复利用已创建的线程降低创建/销毁线程造成的消耗 提高响应速度。当任务到达时,任务可以不需要等到线程创建就立即执行 提高线程的可管理性。线程时稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配/调优和监控。2. ThreadPoolExecutor线程池类参数详解 参数 说明 corePoolSize 核心线程数量,线程池维护线程的.原创 2020-12-07 20:34:50 · 422 阅读 · 0 评论 -
【阻塞队列《二》】阻塞队列用到哪里了?
我们上一篇解释了什么是阻塞队列,队列的架构梳理和种类分析(https://blog.youkuaiyun.com/qq_30546099/article/details/112723231),那么这篇文章就谈谈阻塞队列到底用到什么地方了,并详细解释【问题一】阻塞队列用到了什么地方生产者消费者 线程池 消息中间件1.生产者消费者在使用Lock之前,我们都使用Object 的wait和notify实现同步的。举例来说,一个producer和consumer,consumer发现没有东西了,等待,prod.原创 2021-01-18 10:06:12 · 238 阅读 · 0 评论 -
【锁《二》】独占锁(写锁)/共享锁(读锁)/互斥锁
【问题一】独占锁(写锁)/共享锁(读锁)/互斥锁独占锁:指该锁一次只能被一个线程所持有。对ReentranLock和Synchronized而言都是独占锁。共享锁:指该锁可被多个线程所持有。对ReentrantReadWriteLock,其读锁是共享锁,其写锁是独占锁。读锁的共享锁可保证并发读是非常高效的,读写,写读,写写的过程是互斥的。/** * 多个线程同时读一个资源类没有任何问题,所以为了满足并发量,读取共享资源应该可以同时进行。 * 但是如果有一个线程想去写共享资源类,就不应原创 2021-01-15 17:15:46 · 158 阅读 · 0 评论 -
【锁《一》】全面认识锁,公平锁/非公平锁/可重入锁/递归锁/自旋锁
【问题1】公平锁非公平锁是什么,区别?公平锁:是指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先来后到。队列,先到先得非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。在高并发的情况下,有可能会造成优先级反转或者饥饿现象。ReentranLock默认是非公平锁,synchronized也是非公平锁并发包中的ReentranLock的创建可以指定构造函数的Boolean类型来得到公平锁或非公平锁,默认是非公平锁两者区别:公平锁就是很公平,原创 2021-01-15 17:01:57 · 151 阅读 · 0 评论 -
【CAS】解释下CAS,CAS刨析
由上一篇volatile(https://blog.youkuaiyun.com/qq_30546099/article/details/112607448)引出的问题:volatile的其中一条特性是非原子性,解决非原子性其中一条是用juc下的AtomicInteger解决,那AtomicInteger又是什么呢,原理是什么呢?这就引出了CAS。Atomic的底层实现原理是CAS【问题一】CAS是什么?解释下大概意思,详细的描述就不说了,百度一搜一大把。CAS:比较并交换 CompareAndSet,也就是如原创 2021-01-15 13:55:54 · 455 阅读 · 1 评论 -
【volatile】volatile引出的思考?到底是什么?
ps:疑问都是用红色的字体标识出来,最后引出知识点。。。第一个疑问:volatile到底是什么?volatile是Java虚拟机提供的轻量级的同步机制。特性:能保证可见性和非原子性和禁止指令重排。 适用于:多线程环境下的单次操作(单次读或者单次写)volatile的特性又引发出来了一个疑问,volatile不能保证原子性,那如何解决volatile的原子性呢?两种方式:1.加synchronized修饰;2.使用我们juc(java.util.concurrent并发包)下的Atomic原创 2021-01-14 15:45:00 · 152 阅读 · 3 评论