课程大纲
学习路线规划
技术篇
行业资讯
pmp
软考
谈谈你对AQS的理解,AQS如何实现可重入锁? AQS是一个JAVA线程同步的框架。是JDK中很多锁工具的核心实现框架。 在AQS中,维护了一个信号量state和一个线程组成的双向链表队列。 ...详情>>
Sychronized和ReentrantLock的区别 sychronized是一个关键字,ReentrantLock是一个类 sychronized会自动的加锁与释放锁,ReentrantLock需要程序员手动加锁与释放锁 sychronize ...详情>>
Sychronized的偏向锁、轻量级锁、重量级锁 偏向锁:在锁对象的对象头中记录一下当前获取到该锁的线程ID,该线程下次如果又来获取该锁就可以直接获取到了 轻量级锁:由偏向锁升级 ...详情>>
CountDownLatch和Semaphore的区别和底层原理CountDownLatch表示计数器,可以给CountDownLatch设置一个数字,一个线程调用CountDownLatch的await()将会阻塞,其他线程可以调用Cou ...详情>>
ReentrantLock中tryLock()和lock()方法的区别 tryLock()表示尝试加锁,可能加到,也可能加不到,该方法不会阻塞线程,如果加到锁则返回true,没有加到则返回false lock()表示阻塞加 ...详情>>
ReentrantLock中的公平锁和非公平锁的底层实现首先不管是公平锁和非公平锁,它们的底层实现都会使用AQS来进行排队,它们的区别在于:线程在使用lock()方法加锁时,如果是公平锁,会 ...详情>>
线程池为什么是先添加列队而不是先创建最大线程? 当线程池中的核心线程都在忙时,如果继续往线程池中添加任务,那么任务会先放入队列,队列满了之后,才会新开线程。这就相当于,一个 ...详情>>
线程池的底层工作原理线程池内部是通过队列+线程实现的,当我们利用线程池执行任务时: 如果此时线程池中的线程数量小于corePoolSize,即使线程池中的线程都处于空闲状态,也要创 ...详情>>
Java死锁如何避免?造成死锁的几个原因: 一个资源每次只能被一个线程使用 一个线程在阻塞等待某个资源时,不释放已占有资源 一个线程已经获得的资源,在未使用完之前,不能被强行剥 ...详情>>
并发、并行、串行之间的区别 串行:一个任务执行完,才能执行下一个任务 并行(Parallelism):两个任务同时执行 并发(Concurrency):两个任务整体看上去是同时执行,在底层,两个任务 ...详情>>
什么是Java中的Lambda表达式,它的优点是什么?
解释Java中的异常处理机制,try-catch-finally的工作原理是什么?
什么是Java中的序列化,如何实现自定义序列化?
如何在Java中实现多态?请举例说明
解释Java中的接口和抽象类的区别及使用场景
Spring Boot 控制器基础知识
2024-10-06
2024-09-13
2024-08-01
2024-10-22