pi-lens
Version:
Real-time code feedback for pi — LSP, linters, formatters, type-checking, structural analysis & booboo
59 lines (46 loc) • 1.28 kB
YAML
id: no-wait-notify-on-thread
name: Wait/Notify Should Not Be Called on Thread Instances
severity: error
category: reliability
defect_class: correctness
inline_tier: blocking
language: java
message: "{{METHOD}}() should not be called on Thread instances"
description: |
Calling wait(), notify(), or notifyAll() on Thread objects can
conflict with the Thread's internal join mechanism, causing
unexpected behavior. Use them on a separate lock object.
✅ FIX: Use a dedicated lock object
```java
private final Object lock = new Object();
synchronized (lock) {
lock.wait(); // GOOD - separate lock
}
```
query: |
(method_invocation
object: (identifier) @OBJ
name: (identifier) @METHOD
(
metavars:
- METHOD
- OBJ
post_filter: called_on_thread_instance
tags:
- reliability
- java
- multi-threading
- bugs
examples:
bad: |
Thread thread = new Thread(runnable);
thread.wait(); // BAD - on Thread instance
thread.notify(); // BAD
good: |
Object lock = new Object();
synchronized (lock) {
lock.wait(); // GOOD - on separate lock
}
has_fix: false