Lock总结

lock的核心思想:怎么加锁和释放锁,保证线程有效的执行

锁的应用场景:1.使线程有序的操作数据库,2.秒杀场景中有序的获取订单号

获取锁的过程(nofairlock):

怎么创建一把锁呢?

1.定义一个状态表示线程占有锁,获取到锁,更改锁的状态

2.未获取锁的线程加入队列进行等待,不执行操作

3.释放锁后,控制正在等待的线程,继续争抢锁(注意:等待队列外的其他线程也可能会有争抢锁的情况)

synchronized和lock锁的区别?

不同点

  synchronized是C++实现的

  lock是官方jdk(jvm)实现的

相同点

  默认情况下都是非公平锁

 

posted @ 2020-05-02 17:32  萧何~  阅读(140)  评论(0编辑  收藏  举报