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