Lock总结
lock的核心思想:怎么加锁和释放锁,保证线程有效的执行
锁的应用场景:1.使线程有序的操作数据库,2.秒杀场景中有序的获取订单号
获取锁的过程(nofairlock):
怎么创建一把锁呢?
1.定义一个状态表示线程占有锁,获取到锁,更改锁的状态
2.未获取锁的线程加入队列进行等待,不执行操作
3.释放锁后,控制正在等待的线程,继续争抢锁(注意:等待队列外的其他线程也可能会有争抢锁的情况)
synchronized和lock锁的区别?
不同点
synchronized是C++实现的
lock是官方jdk(jvm)实现的
相同点
默认情况下都是非公平锁