- 博客(143)
- 问答 (1)
- 收藏
- 关注
原创 Java 阻塞队列
文章目录BlockingQueueBlockingQueue接口ArrayBlockingQueue:有界队列LinkedBlockingQueue:无界队列SynchronousQueue:同步队列队列对比BlockingQueue对于Queue而言,BlockingQueue是主要的线程安全的版本,具有阻塞功能,可以允许添加、删除元素被阻塞,直到成功为止,BlockingQueue相对于Queue而言增加了两个方法put、take元素。BlockingQueue接口属于并发容器中的接口,在
2022-05-17 18:42:14
219
原创 Lock 和 AQS
文章目录Lock 和 AQSLock接口AQSAQS同步器原理Lock 和 AQSLock接口Lock实现提供比使用synchronized方法和语句可以获得的更广泛的锁定操作。它们允许更灵活的结构化,可能具有完全不同的属性,并且可以支持多个相关联的对象Condition。Lock接口提供的方法操作:void lock()获取锁,如果锁被使用会一直阻塞直至获取到锁。void lockInterruptibly() throws InterruptedException如果当前线程
2022-05-14 16:06:24
556
原创 Synchronized锁优化
文章目录Synchronized锁优化(1)引言(2)Java对象的内存布局(3)偏向锁(4)轻量级锁(5)重量级锁Synchronized锁优化(1)引言在JDK1.5之前,synchronized的底层实现都是重量级的,借助操作系统底层实现,也称之为synchronized为重量级锁,在JDK1.5之后,对Synchronized进行了各种优化,实现的原理是锁升级的过程,有了偏向锁、轻量级锁和重量级锁的概念。(2)Java对象的内存布局在Java中,创建一个对象后,在JVM中,对象在内存
2022-05-09 21:06:43
1223
1
原创 Java 乐观锁和悲观锁
文章目录一、Java 乐观锁和悲观锁1、悲观锁2、乐观锁2.1 CAS2.2 模拟CAS算法一、Java 乐观锁和悲观锁1、悲观锁总是假设最坏的情况,每次在去获取共享数据的时候都认为别人会修改,所以每次都在获取数据的时候加锁。 传统的关系型数据库里就用到很多这种锁,比如行锁,表锁、读锁、写锁等都是在操作之前先上锁,比如java中Synchronized关键字的实现也是悲观锁。悲观锁存在的问题在多线程竞争下,加锁,释放锁会导致比较多的上下文切换和调度延迟,引起性能问题一个线程持有锁会导致其他
2022-05-08 22:38:27
6471
6
原创 Spring中DI介绍
文章目录Spring中DI介绍一、基于XML配置注入依赖1. 有参构造函数注入依赖2. set方法注入依赖Spring中DI介绍DI(Dependency Injection)即依赖注入,对象之间的依赖由容器在运行期决定,即容器动态的将某个依赖注入到对象之中。一、基于XML配置注入依赖1. 有参构造函数注入依赖①bean类实现有参构造函数②在配置文件中配置参数通过有参构造函数给对象属性赋值有参构造是使用constructor-arg标签 <bean id="student4" c
2022-04-24 16:13:22
5907
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人