主题
请用 30 秒说明 Java 并发程序的核心设计思路
题型:30 秒基础题 · 先减少共享,再说明同步和线程资源治理。
30 秒回答
Java 并发设计的核心不是先加锁,而是先划清任务和状态边界,尽量使用不可变对象、线程封闭或消息传递减少共享。确实需要共享可变状态时,再根据原子性、可见性和有序性要求选择 synchronized、Lock、原子类或并发容器。执行层还要用有界线程池、超时、取消和背压控制资源,并通过吞吐、尾延迟、队列长度、拒绝数和锁竞争判断系统是否健康。
面试官关注点
- 是否先识别共享状态和不变量,而不是机械背锁 API。
- 是否区分线程安全、任务调度和资源隔离三个层面。
- 是否知道并发度越高不代表吞吐一定越高。
易错点
volatile只能提供特定的可见性和有序性语义,不能让复合操作自动具备原子性。- 使用线程安全容器不代表多个容器操作组合后仍然线程安全。