Java多线程-多线程面试题整理

本文详细梳理了Java多线程中的线程安全、多线程概念、同步机制、线程池等方面的重要面试题,包括线程安全的级别、解决线程安全问题的方法、线程生命周期、阻塞与饥饿问题、线程池的工作队列和优点等核心知识点,旨在帮助读者深入理解Java并发编程中的关键概念和技术。
摘要由CSDN通过智能技术生成

目录

线程安全

什么是线程安全

如何解决线程安全问题

线程的生命周期

线程阻塞问题

线程饥饿问题

活锁

多线程

线程和进程

多线程的上下文切换

并发与并行

同步方法和同步块

单例模式的线程安全性

Synchronized关键字和Lock区别

Synchronized关键字和Volatile关键字区别

Synchronized锁升级过程

ReentrantLock与synchronized

Synchronized的实现原理

sleep()和wait()

Thread.sleep(0)的作用

start()和run()

线程死锁

自旋锁

AQS支持的同步方式

什么是CAS以及产生的问题

Java中如何获取到线程dump文件

虚拟机栈和本地方法栈为什么是私有的

程序计数器为什么是私有的

Hashtable的size()方法

Semaphore作用

CyclicBarrier和CountDownLatch的区别

悲观锁和乐观锁

伪共享

线程池

Java中用到的线程调度算法

常见的线程池及适用场景

线程池工作队列

线程池的优点


线程安全

什么是线程安全

程序执行前和执行后的数据都是一致的,那么就是线程安全的。线程安全有几个级别:

不可变,像String、Integer、Long这些,都是final类型的类,任何一个线程都改变不了它们的值,要改变除非新创建一个,所以这些不可变对象不需要任何同步手段就可以直接在多线程环境下使用。

绝对线程安全,不管运行时环境如何,调用者都不需要额外的同步措施。要做到这一点通常需要付出许多额外的代价,Java中标注自己是线程安全的类,实际上绝大多数都不是线程安全的,不过绝对线程安全的类,Java中也有,比方说CopyOnWriteArrayList、CopyOnWriteArraySet。

相对线程安全,相对线程安全也就是通常所说的线程安全,像Vector这种,add、remove方法都是原子操作,不会被打断但也仅限于此࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骆驼整理说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值