多线程面试题1
1.创建线程的几种方式?
2.实现一个线程有哪几种方式,各有什么优缺点,比较常用的是那种?
3.多线程解决同步问题的方式?
4.说一说自己对于synchronized关键字的了解
5.说说自己是怎么使用 synchronized 关键字,在项目中用到了吗
6.讲一下 synchronized 关键字的底层原理
monitor对象
7.谈谈synchronized和ReentrantLock的区别
8.讲一下Java内存模型
9.说说synchronized关键字和 volatile关键字的区别
10.介绍一下Atomic原子类
11.能不能给我简单介绍一下 AtomicInteger类的原理
12.互斥锁和自旋锁的区别
13.读锁和写锁
14.乐观锁和悲观锁的区别
15.CAS是怎么实现线程安全的?
16.CAS的缺点
ABA问题
循环时间长开销大的问题
只能保证一个共享变量的原子操作
17.如何解决ABA问题
update table set value = newValue ,vision = vision + 1 where value = #{oldValue} and vision = #{vision}
// 判断原来的值和版本号是否匹配,中间有别的线程修改,值可能相等,但是版本号100%不一样
18.synchronized如何保证同一时刻只有一个线程可以进入临界区呢?