Spring

发布时间 2023-04-10 10:06:44作者: 空空大首领

1.JUC下面的类有哪些

JUC就是java.util.concurrent包,这个包俗称JUC,里面都是解决并发问题的一些东西

该包的位置位于java下面的rt.jar包下面:

CountDownLatch

CyclicBarrier

Semaphore

ExChanger

CountDownLatch:
CountDownLatch,俗称闭锁,作用是类似加强版的Join,是让一组线程等待其他的线程完成工作以后才执行

就比如在启动框架服务的时候,我们主线程需要在环境线程初始化完成之后才能启动,这时候我们就可以实现使用CountDownLatch来完成

CyclicBarrier:

CyclicBarrier,俗称栅栏锁,作用是让一组线程到达某个屏障,被阻塞,一直到组内的最后一个线程到达,然后屏障开放,接着,所有的线程继续运行

Semaphore:

Semaphore,俗称信号量,作用于控制同时访问某个特定资源的线程数量,用在流量控制

特定资源控制,第一时间就想到了数据库连接,Semaphore 可以用来写数据库连接池

ExChanger:

Exchanger,俗称交换器,用于在线程之间交换数据,但是比较受限,因为只能两个线程之间交换数据

 2.ConcurrentHashMap最大支持多少并发

ConcurrentHashMap的缺点就是他最多只能支持16个线程的并发如果实际场景中,你需要启动的线程的数量比较多,还是同样会发生锁竞争和等待的问题

3.springboot的自动装配原理

springboot启动以后:
通过@EnableAutoConigration里的@lmport (AutoConfigurationlmportSelector.class) 实现配置类的导入,但是并不是传统意义上的单个导入,而是批量进行导入
AutoConfigurationlmportSelector类实现了ImpotSelector接口,重写了selectlmports()方法,用于实现批量装配通过SpringFactoriesLoader机制,扫描classpath路径下的META-INF/spring.factories 读取需要实现自动装配的配置类最终通过筛选的方式,把不符合的类剔除,最终完成SpringBoot的自动装配
(springboot通过根据配置文件,自动装配所属依赖的类,再用动态代理的方式注入到spring容器中)