- 博客(9)
- 收藏
- 关注
原创 并发编程-线程池
若某一短时间内有15个任务按任务1,任务2,任务3....的顺序提交到线程池,那么,任务1,任务2,任务3会被核心线程执行,任务4....任务10会进入到阻塞对列;当任务11,任务12被提交到线程池时,就会创建新的线程来执行任务11,任务12,当任务13....任务15被提交时就会被拒绝。当阻塞队列中的任务被执行完毕,未有新的任务到达,线程池中线程数量大于核心线程数,存在空闲线程并且超过空闲线程存活时间,线程将被销毁。此时,当再有新的任务到达时,加入到阻塞队列尾部,若阻塞队列已满,则拒绝任务。
2023-06-08 15:56:48 216
原创 ThreadLocal学习
ThreadLocal是用来实现线程间资源隔离,线程内资源共享的技术。ThreadLocal是线程私有的。ThreadLocal为每个线程生成一个共享变量副本。每个线程操作共享变量就是操作变量副本。
2023-06-07 16:13:12 241 1
原创 并发编程-锁概念篇
乐观的思想,总是假设最好的情况,在每次获取数据时都认为数据不会被其它线程修改,所有不会加锁,但是在更新数据时,会判断数据是否被其它线程修改。若被其它线程修改,则更新失败。乐观锁适用于读多写少的场景,能提高系统吞吐量。可以使用版本号和CAS来实现乐观锁。Compare and swap 比较并交换。是一种无锁编程。即在不使用锁的情况下,实现多线程间的变量同步。三个操作数:V 当前内存中的值;A与内存值比较的值,B需要更新到内存的值。基本步骤: (自己理解)
2023-06-07 10:41:02 172 1
原创 并发编程-线程概念篇
线程是操作系统调度执行的最小单位。同一个进程内的多个线程资源共享。多个线程操作同一代码,不会产生不确定的结果。多个线程操作同一代码,会产生不确定的结果。原因:多个线程修改同一变量。指令重排。修改操作不满足原子性。内存可见性引起线程不安全。
2023-06-06 14:24:00 127 1
原创 JVM内存模型
用来存储对象的详细数据的内存空间。每new 一个对象,就会在堆上分配一块内存用来存储对象信息。堆又分为和用来存放被新创建的对象信息,新生代又分为。默认占比为(8:1:1)用来存放年龄超过阈值(默认15)的对象信息,或大对象信息。
2023-01-18 16:57:40 463
原创 RabbitMQ的死信队列
一.消息成为死信: 1:消息对列的消息条数受到限制。 2:消息被消费者拒收。basicNack/basicReject,并且不把消息放回原队列中。requeue = false; 3:消息设置了过期时间,超过过期时间未被消费。 二.队列绑定死信交换机: 1.给队列设置参数:x-dead-letter-exchange ------->绑定死信交换机名称 ...
2022-04-19 17:58:23 2223
原创 Rabbit MQ 基础
一.MQ是什么?1.MQ (Message Queue):翻译过来就是消息对列------用来存放消息的队列。2.MQ本质就是一个队列,所以它也有队列的特点是FIFO(先进先出)。3.MQ是一种跨进程的通信机制,常用于上下游间传递信息。4.MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的通信服务。消息上游发送消息只依赖于MQ,不依赖于其他服务。二.为什么要使用MQ?1.流量消峰例如:某一订单系统,最大并发多、只能处理一万次订单,但是在某一时刻,订单数远超出10000时,未使用M
2022-04-19 17:55:52 160
原创 Spring基础----相关类
1.什么是BeanDefinition?BeanDefinition表示Bean的定义。 BeanDefinition有很多属性来描述Bean。 Spring是根据BeanDefinition来创建Bean对象的。 BeanDefinition是Spring非常核心的概念。 @Compont、@Bean、@Service、<bean/>都会被解析为BeanDefnition对象。2.BeanDefinition中的属性。beanClass:表示bean类型,例如User.cla
2022-02-20 20:26:13 199
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人