本人Java经验不是很多,在开发的过程中,经常会听到悲观锁乐观锁 可重入锁 递归锁 共享锁独占锁 偏向锁 自旋锁 是不是被各种各样的锁概念搞的晕头转向
悲观锁:
悲观锁指的是数据对外界的修改采取保守策略,它认为线程很容易会把数据修改掉,因此在整个数据被修改的过程中都会采取锁定状态,直到一个线程使用完,其他线程才可以继续使用。
package learn.cn.多线程;
/**
* create by liuzhiwei on 2020/4/2
*/
public class 悲观锁 {
public static void main(String[] args) {
synchronized (悲观锁.class){
System.out.println("lock");
}
}
}
synchronized修饰的代码块,在执行之前先使用monitorenter指令加锁,然后在执行结束之后再使用monitorexit指令释放锁资源,在整个执行期间此代码都是锁定的状态,这就是典型悲观锁的实现流程。
乐观锁: