0
点赞
收藏
分享

微信扫一扫

Java开发入门与实战,从零开始学数据结构和算法

什么是自旋锁和互斥锁?

由于CLH锁是一种自旋锁,那么我们先来看看自旋锁是什么?

自旋锁说白了也是一种互斥锁,只不过没有抢到锁的线程会一直自旋等待锁的释放,处于busy-waiting的状态,此时等待锁的线程不会进入休眠状态,而是一直忙等待浪费CPU周期。因此自旋锁适用于锁占用时间短的场合。

这里谈到了自旋锁,那么我们也顺便说下互斥锁。这里的互斥锁说的是传统意义的互斥锁,就是多个线程并发竞争锁的时候,没有抢到锁的线程会进入休眠状态即sleep-waiting,当锁被释放的时候,处于休眠状态的一个线程会再次获取到锁。缺点就是这一些列过程需要线程切换,需要执行很多CPU指令,同样需要时间。如果CPU执行线程切换的时间比锁占用的时间还长,那么可能还不如使用自旋锁。因此互斥锁适用于锁占用时间长的场合。

初识多线程

  • 介绍进程
  • 回到线程
  • 进程与线程
  • 并行与并发
  • Javs实现多线程
  • Java实现多线程需要注意的细节

Java开发入门与实战,从零开始学数据结构和算法

Thread线程类API

设置线程名
守护线程
优先级线程
线程生命周期

Java开发入门与实战,从零开始学数据结构和算法

使用多线程需要注意的问题

  • 线程安全问题
  • 性能问题
  • 安全发布对象
  • 简述解决线程安全性的办法
  • 原子性和可见性
  • 线程封闭
  • 不变性
  • 线程安全性委托

Java开发入门与实战,从零开始学数据结构和算法

synchronized锁和lock锁

  • synchronized锁
  • Lock显式锁
  • Java锁简单总结

Java开发入门与实战,从零开始学数据结构和算法

AQS

  • AQS是什么?
  • 同步状态
  • 先进先出队列
  • sacquire方法
  • release方法

Java开发入门与实战,从零开始学数据结构和算法

ReentrantLock

  • 内部类
  • 构造方法
  • 非公平lock方法
  • 公平lock方法
  • unlock方法

Java开发入门与实战,从零开始学数据结构和算法

ReentrantReadWriteLock

  • ReentrantReadWriteLock内部类
  • 读锁和写锁的状态表示
  • 写锁的获取
  • 读锁获职

Java开发入门与实战,从零开始学数据结构和算法

线程池

  • 线程池简介
  • JDK提供的线程池API
  • ForkJoinPool线程池
  • Callable和Future
  • ThreadPoolExecutor详解
  • execute执行方法
  • 线程池关闭

Java开发入门与实战,从零开始学数据结构和算法

死锁

  • 锁顺序死锁
  • 动态锁顺序死锁
  • 协作对象之间发生死锁
  • 固定锁顺序避免死锁
  • 开放调用避免死锁
  • 使用定时锁
  • 死锁检测

Java开发入门与实战,从零开始学数据结构和算法

线程常用的工具类

  • CountDownLatch
  • CyclicBarrier
  • Semaphore

Java开发入门与实战,从零开始学数据结构和算法

Atomic

  • 基础铺垫
  • CAS失败重试(自旋)
  • 原子变量类简单介绍
  • LongAdder、AtomicLong性能对比

Java开发入门与实战,从零开始学数据结构和算法

ThreadLocal

  • 什么是ThreadLocal
  • 为什么要学习ThreadLocal?
  • ThreadLocal底层原理总结
  • 避免内存泄露

Java开发入门与实战,从零开始学数据结构和算法

面试结束复盘查漏补缺

每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。

以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

重要的事说三遍,关注+关注+关注!

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

image.png

更多笔记分享

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

举报

相关推荐

0 条评论