锁机制的复习

Posted yunianzeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了锁机制的复习相关的知识,希望对你有一定的参考价值。

1.为什么使用锁:

解决并发操作数据引起脏读,数据不一致的情况;

锁对象:java中任何非null对象;

2.实现方法:

有两种方式:synchronized关键字和并发包中的锁类

// (1):加静态方法上面,表示会监视这个类对象
public static synchronized void staticFunc() {
    //dosomething
}

//(2):加实例方法上面,表示监视当前这个实例对象,我们常说的this
public synchronized void virtualFunc() {
    //dosomething
}

public void monitorThis() {
    //(3):加代码块上面,括号里面传入的是需要监视的对象,这里是this
    synchronized (this){
    }
}

private Object lock = new Object();
public void monitorObject() {
    //(4):自己new了一个lock对象,然后监视lock对象
    synchronized (lock) {
    }
}
private ReentrantLock lock = new ReentrantLock();
 public void testLock() {
        // 获取锁
        lock.lock();
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("test ReentrantLock ");
        // 释放锁
        lock.unlock();
  }

 

以上是关于锁机制的复习的主要内容,如果未能解决你的问题,请参考以下文章

Java锁机制(Synchronized)[无锁偏向锁轻量级锁重量级锁]

Java锁机制(Synchronized)

synchronized学习

Redis实现分布式锁(设计模式应用实战)

Redis实现分布式锁(设计模式应用实战)

和朱晔一起复习Java并发:锁(含锁性能测试)