Java后端
·2025-04-02打卡,今日算法5题,重学java集合,巩固知识,明天开始停止背诵新的八股文,反复复习之前的八股文,背了也快140题了,后续加强算法的学习。
今日八股文:
1、编译执行与解释执行的区别是什么?JVM 使用哪种方式?
1. 编译执行:程序执行前会将代码事先编译成机器码,再直接在cpu上运行。优点:运行速度块,缺点:兼容性差,在不同的平台需要重新编译。 例如 c/c++
2. 解释执行:程序不事先编译,而是使用解释器解释执行。优点:兼容性高,不需要针对不同的平台重新编译。缺点:运行慢,每次执行都要翻译然后执行
3. jvm使用解释执行+预先编译 显示使用解释执行,将代码编译成字节码,然后翻译字节码文件执行。
预编译:当JIT中发现某个代码块或方法经常执行,就会事先预编译成机器码,存入缓存中。
2、Java 的 synchronized 是怎么实现的?
修饰方法 ACK_SYNCHRONIZED 修饰代码块 monitorenter、monitorexit。
锁升级:无锁
偏向锁:在线程状态上设置一个标识位,下次线程获取时不需要任何同步操作直接获取锁
轻量级锁:偏向锁在被其他线程获取后,升级为轻量级锁。线程通过CAS获取锁,如果获取失败,尝试自旋重试,如果自旋超过一定时间,升级为重量锁。
重量级锁:线程获取锁失败会被阻塞,由操作系统或其他线程唤醒。
3、线程的生命周期是什么,线程有几种状态,什么是上下文切换
创建、运行、就绪、阻塞(在内存中)、挂起(被移除内存)、结束
2
0
分享
操作
评论
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
