...
LCK09-J-EX1: Methods that require multiple locks may hold several locks while waiting for the remaining locks to become available. This constitutes a valid exception, although the programmer must follow other applicable rules, especially LCK07-J. Avoid deadlock by requesting and releasing locks in the same order to avoid deadlock .
Automated Detection
Some static analysis tools are capable of detecting violations of this rule.
...
CCE_LK_LOCKED_BLOCKING_CALLS
...
Risk Assessment
Blocking or lengthy operations performed within synchronized regions could result in a deadlocked or unresponsive system.
Rule | Severity | Likelihood | Detectable |
|---|
Repairable | Priority | Level | |
|---|---|---|---|
LCK09-J | Low | Probable | No |
No | P2 | L3 |
Automated Detection
Some static analysis tools are capable of detecting violations of this rule.
| Tool | Version | Checker | Description | ||||||
|---|---|---|---|---|---|---|---|---|---|
| CodeSonar |
| JAVA.CONCURRENCY.STARVE.BLOCKING | Blocking in Critical Section (Java) | ||||||
| Klocwork |
| JD.LOCK.NOTIFY JD.LOCK.SLEEP JD.LOCK.WAIT | |||||||
| Parasoft Jtest |
| CERT.LCK09.TSHL CERT.LCK09.TSHL2 | Do not use blocking methods while holding a lock Do not call 'Thread.sleep()' while holding a lock since doing so can cause poor performance and deadlocks | |||||||
| PVS-Studio |
| V6095 | |||||||
| ThreadSafe |
| CCE_LK_LOCKED_BLOCKING_CALLS | Implemented | ||||||
| SonarQube |
| S2276 | Implemented |
Related Guidelines
Bibliography
...