• DB Locker


    LockType public void lock(LockType lockType) {             
            try {
                entityManager.find(LockEntity.class, lockType, LockModeType.PESSIMISTIC_WRITE);
            } catch (Exception e) {
                Logger.Error("Failed to find LockEntity by LockType(" + lockType.name() + ") because of DB error.");
                Logger.Debug("ConfigDbManagerImpl:lock", e);
                DBAlarmHelper.raiseAlarm(e);
                throw e;
            }
            DBAlarmHelper.clearAlarm();
    }
    public void test() throws Exception {
            locker.lock(
     
    LockType.AddMessage );
            ...........
            ...........

        当第一个线程进入test()方法时, 会调用lock方法,从而使用悲观锁锁住该列。 当第二个线程又进入test()方法时, 也想要尝试会的AddMessage的这列,这是就需要等待第一个线程退出test()方法,才能获得该锁。

  • 相关阅读:
    python实现Linux启动守护进程
    多维监控体系
    python 设计模式
    markdown安装和使用
    cobbler深入学习
    cobbler重装、web、定制化
    cobbler工作流分析
    cobbler安装、部署、测试
    Django中Celery的实现介绍(一)
    centos 搭建git服务器
  • 原文地址:https://www.cnblogs.com/zhonghan/p/2630915.html
Copyright © 2020-2023  润新知