标签:面试题 day02 线程 公平 Reentranlock 轻量级 偏向
面试题day02
1.Reentranlock和Synchronized的区别
synchronized
1.是通过monitor对象(监视器锁)来完成,monitorenter进入synchronized锁,monitoreixt正常退出synchronize的锁
2.不需要手动释放锁
3.不可中断类型的锁
4.非公平锁
5.不能绑定condition
6.synchronize锁的是对象
锁的状态有四种,随着锁的竞争,锁会从无锁到偏向锁到轻量级锁到重量级锁,单向的过程
偏向锁的核心思想是,如果一个线程获得了锁,那么锁就进入偏向模式,当这个线程再次请求锁时,无需再做任何同步操作
轻量级锁能够提升程序性能的依据是“对绝大部分的锁,在整个同步周期内都不存在竞争
轻量级锁失败后,虚拟机为了避免线程真实地在操作系统层面挂起,还会进行一项称为自旋锁的优化手段。自旋锁会假设在不久将来,当前的线程可以获得锁
Reentranlock
1.等待可中断
2.公平锁,非公平锁可设置
3.绑定condition
4.锁的是线程
原理:AQS+CAS
第一个获取锁的线程就做了两件事情:state=1,thread为当前线程
当多个线程同时尝试占用同一个锁时,CAS操作只能保证一个线程操作成功,剩下的只能乖乖的去排队啦。
“非公平”即体现在这里,如果占用锁的线程刚释放锁,state置为0,而排队等待锁的线程还未唤醒时,新来的线程就直接抢占了该锁,那么就“插队”了。公平锁需要关心队列的情况,得按照队列里的先后顺序来获取锁(会造成大量的线程上下文切换)
2.prepareStatement的用法和解释
1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程PreparedStatement 就相当于是一个信使的作用,它是Statement的子接口
1)、批量处理的时候效率高
2)、preparestatement 具有防sql注入
3)、代码可读性比较好
标签:面试题,day02,线程,公平,Reentranlock,轻量级,偏向 来源: https://blog.csdn.net/weixin_46048889/article/details/119429633
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。