| Instances of boxed primitive types may be cached by the standard library | |
| `valueOf` method. This method is used for autoboxing. This means that using a | |
| boxed primitive as a lock can result in unintentionally sharing a lock with | |
| another piece of code. | |
| Consider using an explicit lock `Object` instead of locking on a boxed | |
| primitive. That is, prefer this: | |
| ```java | |
| private final Object lock = new Object(); | |
| void doSomething() { | |
| synchronized (lock) { | |
| // ... | |
| } | |
| } | |
| ``` | |
| instead of this: | |
| ```java | |
| private final Integer lock = 42; | |
| void doSomething() { | |
| synchronized (lock) { | |
| // ... | |
| } | |
| } | |
| ``` |