锁对象

Posted

tags:

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

SAP中锁模式有三种

  模式E:当更改数据的时候设置为此模式。
    模式S:本身不需要更改数据,但是希望显示的数据不被别人更改。
    模式X:和E类似,但是不允许累加,完全独占。
    如果你在一个程序里成功对一个锁对象加锁之后,如果模式为E,其他用户不能再对这个锁对象加E、X、S模式的任意一种锁;
    如果你在一个程序里成功对一个锁对象加锁之后,如果模式为X,其他用户不能再对这个锁对象加E、X、S模式的任意一种锁;
    如果你在一个程序里成功对一个锁对象加锁之后,如果模式为S,其他用户不能再对这个锁对象加E、X模式的锁,但是可以加S模式的锁;
    如果你在一个程序里成功对一个锁对象加锁之后,如果模式为E,在这个程序,你还可以再对这个锁对象加E、S模式的锁,X模式的不可以。
    如果你在一个程序里成功对一个锁对象加锁之后,如果模式为X,在这个程序,你不可以再对这个锁对象加E、X、S模式的锁。
    如果你在一个程序里成功对一个锁对象加锁之后,如果模式为S,在这个程序,你还可以再对这个锁对象加S模式的锁,如果没有别的用户对其加S模式的锁,那么你还可以对其加E模式的锁。X模式的不可以。
    当激活锁对象的时候,系统会自动创建两个FM,ENQUEUE_<锁对象名>和DEQUEUE_<锁对象名>,分别用来锁定和解锁。 
 
锁定和解锁代码:
CALL FUNCTION ENQUEUE_EZMM_T_AE12
  EXPORTING
    mode_zmm_t_ae12 = X
    mandt           = sy-mandt
  EXCEPTIONS
    foreign_lock    = 1
    system_failure  = 2
    OTHERS          = 3.
CALL FUNCTION DEQUEUE_EZMM_T_AE12
    EXPORTING
      mode_zmm_t_ae12 = X
      mandt           = sy-mandt.

 

 

 

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

ReentrantReadWriteLock场景应用

互斥锁 & 共享锁

静态方法内的同步块将获取类级别锁或对象级别锁

java中ReentrantReadWriteLock读写锁的使用

JUC并发编程 共享模式之工具 JUC CountdownLatch(倒计时锁) -- CountdownLatch应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段

ReleaseMutex:从非同步代码块调用对象同步方法