面试复习 之 多线程

本文深入探讨Java并发编程的关键概念,包括线程安全、死锁、线程池、同步机制等,解析synchronized与ReentrantLock的区别,以及Callable、Future和FutureTask的使用场景。通过实例说明线程安全的三大特性:原子性、可见性和有序性,帮助读者理解多线程环境下程序的正确性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ThreadLocal

https://www.cnblogs.com/ldq2016/p/9041856.html

信号量

公平锁和非公平锁

Callable 、 Future 和 Future Task

https://www.cnblogs.com/dolphin0520/p/3949310.html

线程池

中断机制

Servlet 是否是线程安全

什么叫线程安全?
“当多个线程访问某个类时,不管运行时环境采用何种调度方式,或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的.”

https://www.cnblogs.com/suziyu/p/11161017.html

Servlet 需要同步操作吗?

https://blog.csdn.net/fubo1990/article/details/81775054

synchronized 和 ReentrantLock


线程安全

##什么是线程安全问题?
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的,或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题 。

线程安全需要保证几个基本特性

1、原子性,简单说就是相关操作不会中途被其他线程干扰,一般通过同步机制实现。
2、可见性,是一个线程修改了某个共享变量,其状态能够立即被其他线程知晓,通常被解释为将线程本地状态反映到主内存上,volatile 就是负责保证可见性的。
3、有序性,是保证线程内串行语义,避免指令重排等。

死锁的4个必要条件(如何从这四个条件出发解决死锁)

AQS 、JDK1.6之后对锁的改进(重要)


synchronized和 ReentrantLock,问怎么实现的

怎么去观察死锁的,比如用java命令
线程池实现
多线程使用,能不能无线增加线程?
synchronized的用法以及有什么劣势 lock进行比较 ReetrantLock的内部实现
单例模式有几种形式以及区别
Futuretask 知道吧 它怎么返回计算值的
啥场景用乐观锁、悲观锁
线程池的原理,创建到销毁过程描述下
数量如何设定,线程池参数的意义? 核心线程数和最大线程数的设计要考虑什么因素?
偏向锁、轻量级锁、自旋锁?
什么情况下会产生死锁?描述一段产生死锁的代码?
说一下ReetrantLock的内部实现?
多线程是不是肯定比单线程好? 什么样的任务适合用多线程什么适合单线程?
单CPU的情况下适合用多线程吗?
十个线程,分别执行不同任务,如何让他们执行完后,相互等待,一同出发
阻塞队列实现
什么时候发生stackOverflow、一个线程的工作栈是多大?哪些区域会发生OOM
线程与协程的区别嘛?协程有哪些优势?把所有多线程都替换成协程实现可以嘛?
stringbuffer和stringbuilder的区别
介绍一下jdk中自带的线程池以及区别
newCachedThreadPool如果提交任务过快,会出现内存耗尽的情况,如何解决
如何实现synchronized一样的效果?
Java有哪些锁。
死锁形成原因
死锁解决方法
如果有个需求要求不能死锁怎么设计
多线程要注意什么
Java中pv操作实现时用的类
Java map底层实现
,创建线程3种方法
Future是什么
ReentrantLock的API里面,lock()和trylock()的区别?
关于锁讲一下JVM里面的Monitor?
信号量与锁的区别。
有没有线程安全的 LIst?怎么实现的?
ScheduledThreadPool 特点,什么时候会用到它?
什么是守护线程使用场景
cyclicbarrier
JUC
定时任务,java怎么实现
CountDownLatch
Java中线程是如何停止的?
操作系统是如何维护Java所创建的线程的?
synchronized有什么作用?加在静态函数上有什么作用
Java 有什么锁类型?答: 自旋锁,读写锁,CAS操作,CAS的ABA问题,锁膨胀问题。
交换器
同步队列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值