"Lock"에 사용되는 객체는 "synchronized"되어선 안됩니다

 

java.util.concurrent.locks.Locksynchronized보다 강력하고 유동적인 형태로 locking 연산을 제공합니다 그래서 Locksynchronized를 사용하는 것은 매우 어리석은 일입니다 이런 객체는 tryLock()이나 unlock()같은 방식으로 잠금을 제어하는 것이 맞습니다

규칙을 어긴 코드

Lock lock = new MyLockImpl();
synchronized(lock) {  // 규칙을 어긴 코드
  //...
}

규칙을 준수한 해결책

Lock lock = new MyLockImpl();
lock.tryLock();
//...

같이보면 좋은 자료

  • CERT, LCK03-J. - 상위 수준 객체들의 고유한 lock에 sychronize를 사용하지 마세요

If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project