java后端面试题(多线程极简)

目录

1、进程和线程的区别

进程是独立的程序运行单位,占用独立内存,互不干扰;线程是进程中的执行单元,共享进程资源,开销更小、更轻量。

2、并发与并行的区别

并发是多个任务交替执行,看似同时;并行是多个任务真正同一时刻同时执行。

3、Java创建线程的常用方式

两种基础常用方式:继承Thread类、实现Runnable接口。工作中优先用线程池创建线程。

4、run()和start()方法区别

start():真正开启新线程,只能调用一次;run()是普通业务方法,直接调用不会开启新线程。

5、wait和sleep的核心区别

wait会释放锁资源,需要被唤醒;sleep不会释放锁,时间到自动执行。

6、Java线程有几种状态

常用六种状态:新建、可运行、阻塞、等待、限时等待、终止。

7、volatile关键字的作用

保证多线程之间变量数据实时可见,不保证操作原子性,用于解决简单的数据可见问题。

8、synchronized关键字的作用

基础同步锁,修饰方法或代码块,保证多线程下代码安全,防止数据错乱。

9、什么是死锁,产生原因是什么

两个及以上线程互相持有对方需要的锁,互相等待、程序卡死。多为锁使用顺序混乱导致。

10、为什么要用线程池

避免频繁创建、销毁线程造成资源浪费,统一管理线程,提高程序运行效率。

相关推荐
techdashen1 小时前
从 Windows 的 ping.exe 入手:动态库、调用约定与 Rust FFI
开发语言·windows·rust
IT 行者1 小时前
GitHub Spec Kit 实战(四):读懂和干预 /speckit.plan——AI 最自由发挥的一步
java·人工智能·github·ai编程·claude
独隅2 小时前
IntelliJ IDEA 在 Windows 上的完整安装与使用指南
java·windows·intellij-idea
Misnearch2 小时前
为什么List<int[]> ans = new ArrayList<>()能成功创建
java·object
AI科技星2 小时前
数术宇宙:零一无穷创世史诗
开发语言·网络·量子计算·拓扑学
梦想的颜色2 小时前
从零入门:Docker在Ubuntu上的安装、使用与主流镜像仓库实战(Java/Go/MySQL/PostgreSQL/MongoDB/Nginx
java·ubuntu·docker
是多巴胺不是尼古丁2 小时前
期末java复习--string
java·开发语言·python
Survivor0012 小时前
高并发系统流量治理的底层算法
java·开发语言
凡人叶枫2 小时前
Effective C++ 条款35:考虑 virtual 函数以外的其他选择
java·c++·spring