多线程面试题1

多线程面试题1

1.创建线程的几种方式?

多线程面试题1_第1张图片

2.实现一个线程有哪几种方式,各有什么优缺点,比较常用的是那种?

多线程面试题1_第2张图片
多线程面试题1_第3张图片

3.多线程解决同步问题的方式?

多线程面试题1_第4张图片

4.说一说自己对于synchronized关键字的了解

多线程面试题1_第5张图片

5.说说自己是怎么使用 synchronized 关键字,在项目中用到了吗

多线程面试题1_第6张图片
多线程面试题1_第7张图片
多线程面试题1_第8张图片

6.讲一下 synchronized 关键字的底层原理

在这里插入图片描述
多线程面试题1_第9张图片
多线程面试题1_第10张图片
多线程面试题1_第11张图片

monitor对象

多线程面试题1_第12张图片
多线程面试题1_第13张图片
在这里插入图片描述

7.谈谈synchronized和ReentrantLock的区别

多线程面试题1_第14张图片
多线程面试题1_第15张图片

8.讲一下Java内存模型

多线程面试题1_第16张图片
多线程面试题1_第17张图片

9.说说synchronized关键字和 volatile关键字的区别

多线程面试题1_第18张图片

10.介绍一下Atomic原子类

多线程面试题1_第19张图片
多线程面试题1_第20张图片

11.能不能给我简单介绍一下 AtomicInteger类的原理

多线程面试题1_第21张图片
多线程面试题1_第22张图片

12.互斥锁和自旋锁的区别

多线程面试题1_第23张图片
在这里插入图片描述
多线程面试题1_第24张图片
多线程面试题1_第25张图片
多线程面试题1_第26张图片
多线程面试题1_第27张图片

13.读锁和写锁

多线程面试题1_第28张图片
多线程面试题1_第29张图片
多线程面试题1_第30张图片
多线程面试题1_第31张图片
多线程面试题1_第32张图片
多线程面试题1_第33张图片

14.乐观锁和悲观锁的区别

多线程面试题1_第34张图片
多线程面试题1_第35张图片
多线程面试题1_第36张图片

15.CAS是怎么实现线程安全的?

在这里插入图片描述
多线程面试题1_第37张图片
多线程面试题1_第38张图片

16.CAS的缺点

ABA问题

多线程面试题1_第39张图片
多线程面试题1_第40张图片

循环时间长开销大的问题

在这里插入图片描述

只能保证一个共享变量的原子操作

在这里插入图片描述

17.如何解决ABA问题

多线程面试题1_第41张图片

update table set value = newValue ,vision = vision + 1 where value = #{oldValue} and vision = #{vision} 
// 判断原来的值和版本号是否匹配,中间有别的线程修改,值可能相等,但是版本号100%不一样

在这里插入图片描述

18.synchronized如何保证同一时刻只有一个线程可以进入临界区呢?

多线程面试题1_第42张图片
多线程面试题1_第43张图片
多线程面试题1_第44张图片

19.简单介绍可重入锁

多线程面试题1_第45张图片

20.引起线程切换的几种方式

多线程面试题1_第46张图片

你可能感兴趣的:(#,多线程和并发面试题,多线程,java)