zoukankan      html  css  js  c++  java
  • 锁机制

    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();
      }
  • 相关阅读:
    [Re] Spring-4(SourceCode)
    [Re] Spring-3(JdbcTemplate)
    [Re] Spring-2(IOC+AOP)
    [Re] Spring-1(bean)
    08-MyBatis(2)
    08-传输层(7)
    07-传输层(6)
    06-传输层(5)
    05-传输层(4)
    ALS推荐算法
  • 原文地址:https://www.cnblogs.com/yunianzeng/p/12327641.html
Copyright © 2011-2022 走看看