Java并发面试题库:线程、进程、栈、堆、死锁、活锁等
需积分: 11 79 浏览量
更新于2024-08-28
收藏 34KB MD 举报
Java并发面试题库
Java并发编程是Java开发者面试中的一道重要题目,本资源提供了52道Java常用的并发面试题目,包含答案,涵盖了Java多线程编程的基础知识、线程同步、死锁、活锁、线程安全、线程通信等方面的知识点。
一、线程与进程
* 线程与进程的区别:进程是系统进行资源分配和调度的一个独立单位;线程是进程的一个实体,是CPU调度和分派的基本单位。
* 线程与进程的关系:一个进程可以有多个线程,但至少有一个线程;资源分配给进程,同一进程的所有线程共享进程中的所有资源。
* 线程在执行中需要同步协作,不同的进程的线程间要利用消息通信的办法实现同步。
二、多线程编程
* 在单核cpu机器上,多线程编程的意义:如果程序是cpu密集型的,不推荐使用多线程开发,因为过多的线程切换反而会降低程序的运行效率。如果程序涉及到其他I/O操作的任务,可以使用多线程开发提高cpu的使用效率。
* 多线程中栈与堆的关系:栈是私有的,只能被所属线程使用;而堆是公有的,可以被所有线程使用。
* JVM中设置每个线程的堆栈大小的参数:使用-Xss参数为启动的每个线程分配的内存大小。
三、死锁和活锁
* 死锁的定义:两个或多个线程相互等待对方释放锁,则会出现死锁现象。
* 活锁的定义:任务执行者没有被阻塞,但由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败。
* 死锁和活锁的区别:死锁是线程之间的相互等待,活锁是任务执行者的重复尝试。
四、线程同步
* Thread.sleep()方法与Object.wait()方法的区别:
+ 相同点:两者都可以用于在多线程环境中使当前线程暂时阻塞。
+ 不同点:
- 从所属类来看:wait()属于Object类的方法,而sleep()属于Thread类的方法。
- 从使用场景来看:wait()必须与notify()或notifyAll()方法配合使用,且调用之前必须保证wait()或notify()方法的调用者的锁被当前线程持有。
- 从是否需要捕获异常来看:wait()、notify()、notifyAll()不需要捕获异常。
这些知识点涵盖了Java多线程编程的基础知识、线程同步、死锁、活锁、线程安全、线程通信等方面的知识点,对Java开发者面试和实际开发工作具有重要的参考价值。
2023-10-03 上传
2023-07-27 上传
2023-09-19 上传
2023-06-06 上传
2024-01-31 上传
2023-06-07 上传
2023-06-04 上传
jforgame
- 粉丝: 5293
- 资源: 2
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构