【面试准备】Java并发编程

修订记录时间
首次发布2023.06

一、线程基础

1.1 Java怎么保证多线程的执行安全?

Java并发的特性:原子性、内存可见性、有序性。

1.2 一个线程OOM后,其他还能运行吗?

可以。当一个线程抛出OOM异常后,它所占据的内存资源会全部被释放掉,从而不会影响其他线程的运行。
一个线程oom,进程里其他线程还能运行吗?

二、锁

2.1 synchronized

synchronized是对象锁,是互斥的,在同一时间最多有一个线程持有这个锁,其他线程想获取时会阻塞住。

synchronized底层原理

底层是一个Monitor,由JVM提供,C++实现的。
Monitor中有三个属性:

  • Owner:关联的是获得锁的线程。
  • EntryList:关联的是阻塞状态的线程,无顺序,锁释放时竞争。
  • WaitSet:关联的是Waiting状态的线程。

synchronized和lock

2.2 CAS

2.3 volatile

2.4 AQS

2.5 Semaphore

二十八. Semaphore的使用详解

2.6 死锁

1. 产生条件

2. 解决方案

2.7 JMM Java内存模型

三、线程池

https://blog.csdn.net/wangjun5159/article/details/114977959

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值