1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

Update 美团面试常见问题总结.md

This commit is contained in:
qinggeng 2020-02-16 20:47:55 +08:00 committed by GitHub
parent c78f4af33b
commit 59ce7063be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -786,7 +786,7 @@ synchronized 是依赖于 JVM 实现的,前面我们也讲到了 虚拟机团
**④ 两者的性能已经相差无几**
在 JDK1.6 之前synchronized 的性能是比 ReentrantLock 差很多。具体表示为synchronized 关键字吞吐量线程数的增加,下降得非常严重。而 ReentrantLock 基本保持一个比较稳定的水平。我觉得这也侧面反映了, synchronized 关键字还有非常大的优化余地。后续的技术发展也证明了这一点,我们上面也讲了在 JDK1.6 之后 JVM 团队对 synchronized 关键字做了很多优化。JDK1.6 之后synchronized 和 ReentrantLock 的性能基本是持平了。所以网上那些说因为性能才选择 ReentrantLock 的文章都是错的JDK1.6 之后,性能已经不是选择 synchronized 和 ReentrantLock 的影响因素了!而且虚拟机在未来的性能改进中会更偏向于原生的 synchronized所以还是提倡在 synchronized 能满足你的需求的情况下,优先考虑使用 synchronized 关键字来进行同步!优化后的 synchronized 和 ReentrantLock 一样,在很多地方都是用到了 CAS 操作。
在 JDK1.6 之前synchronized 的性能是比 ReentrantLock 差很多。具体表示为synchronized 关键字吞吐量线程数的增加,下降得非常严重。而 ReentrantLock 基本保持一个比较稳定的水平。我觉得这也侧面反映了, synchronized 关键字还有非常大的优化余地。后续的技术发展也证明了这一点,我们上面也讲了在 JDK1.6 之后 JVM 团队对 synchronized 关键字做了很多优化。JDK1.6 之后synchronized 和 ReentrantLock 的性能基本是持平了。所以网上那些说因为性能才选择 ReentrantLock 的文章都是错的JDK1.6 之后,性能已经不是选择 synchronized 和 ReentrantLock 的影响因素了!而且虚拟机在未来的性能改进中会更偏向于原生的 synchronized所以还是提倡在 synchronized 能满足你的需求的情况下,优先考虑使用 synchronized 关键字来进行同步!优化后的 synchronized 和 ReentrantLock 一样,在很多地方都是用到了 CAS 操作。
## 4 线程池了解吗?
@ -922,4 +922,4 @@ Nginx 有以下 5 个优点:
- Nginx 二进制可执行文件:由各模块源码编译出一个文件
- nginx.conf 配置文件:控制 Nginx 行为
- acess.log 访问日志: 记录每一条 HTTP 请求信息
- error.log 错误日志:定位问题
- error.log 错误日志:定位问题