修订记录 | 时间 |
---|---|
首次发布 | 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
2.6 死锁
1. 产生条件
2. 解决方案
2.7 JMM Java内存模型
三、线程池
https://blog.csdn.net/wangjun5159/article/details/114977959