Inspectopedia 2024.3 Help

Threading issues

'AtomicFieldUpdater' field not declared 'static final'   New in this release

Reports fields of types: java.util.concurrent.atomic.AtomicLongFieldUpdater java.util.concurrent.atomic.AtomicIntegerFieldUpdater java.util.concurrent.atomic.AtomicReferenceFieldUpdater that are not static final.

'ThreadLocal' field not declared 'static final'   New in this release

Reports fields of type java.lang.ThreadLocal that are not declared static final.

'ThreadLocal.set()' with null as an argument   New in this release

Reports java.lang.ThreadLocal.set() with null as an argument.

'ThreadLocalRandom' instance might be shared   New in this release

Reports java.util.concurrent.ThreadLocalRandom instances which might be shared between threads.

'await()' not called in loop   New in this release

Reports java.util.concurrent.locks.Condition.await() not being called inside a loop.

'await()' without corresponding 'signal()'   New in this release

Reports calls to Condition.await(), for which no call to a corresponding Condition.signal() or Condition.signalAll() can be found.

'notify()' or 'notifyAll()' called on 'java.util.concurrent.locks.Condition' object   New in this release

Reports calls to notify() or notifyAll() made on java.util.concurrent.locks.Condition object.

'notify()' or 'notifyAll()' without corresponding state change   New in this release

Reports Object.notify() or Object.notifyAll() being called without any detectable state change occurring.

'notify()' without corresponding 'wait()'   New in this release

Reports calls to Object.notify() or Object.notifyAll() for which no call to a corresponding Object.wait() can be found.

'signal()' without corresponding 'await()'   New in this release

Reports calls to Condition.signal() or Condition.signalAll() for which no call to a corresponding Condition.await() can be found.

'synchronized' method   New in this release

Reports the synchronized modifier on methods.

'wait()' called on 'java.util.concurrent.locks.Condition' object   New in this release

Reports calls to wait() made on a java.util.concurrent.locks.Condition object.

'wait()' not called in loop   New in this release

Reports calls to wait() that are not made inside a loop.

'wait()' or 'await()' without timeout   New in this release

Reports calls to Object.wait() or Condition.await() without specifying a timeout.

'wait()' or 'notify()' is not in synchronized context   New in this release

Reports calls to wait(), notify(), and notifyAll() that are not made inside a corresponding synchronized statement or synchronized method.

'wait()' while holding two locks   New in this release

Reports calls to wait() methods that may occur while the current thread is holding two locks.

'wait()' without corresponding 'notify()'   New in this release

Reports calls to Object.wait(), for which no call to the corresponding Object.notify() or Object.notifyAll() can be found.

'while' loop spins on field   New in this release

Reports while loops that spin on the value of a non-volatile field, waiting for it to be changed by another thread.

Access to 'static' field locked on instance data   New in this release

Reports access to non-constant static fields that are locked on either this or an instance field of this.

Busy wait   New in this release

Reports calls to java.lang.Thread.sleep() that occur inside loops.

Call to 'System.runFinalizersOnExit()'   New in this release

Reports calls to System.runFinalizersOnExit().

Call to 'Thread.setPriority()'   New in this release

Reports calls to Thread.setPriority().

Call to 'Thread.sleep()' while synchronized   New in this release

Reports calls to java.lang.Thread.sleep() methods that occur within a synchronized block or method.

Call to 'Thread.start()' during object construction   New in this release

Reports calls to start() on java.lang.Thread or any of its subclasses during object construction.

Call to 'Thread.stop()', 'suspend()' or 'resume()'   New in this release

Reports calls to Thread.stop(), Thread.suspend(), and Thread.resume().

Call to 'Thread.yield()'   New in this release

Reports calls to Thread.yield().

Call to 'notify()' instead of 'notifyAll()'   New in this release

Reports calls to Object.notify().

Call to 'signal()' instead of 'signalAll()'   New in this release

Reports calls to java.util.concurrent.locks.Condition.signal().

Call to a 'native' method while locked   New in this release

Reports calls native methods within a synchronized block or method.

Class directly extends 'Thread'   New in this release

Reports classes that directly extend java.lang.Thread.

Double-checked locking   New in this release

Reports double-checked locking.

Empty 'synchronized' statement   New in this release

Reports synchronized statements with empty bodies.

Field accessed in both 'synchronized' and unsynchronized contexts   New in this release

Reports non-final fields that are accessed in both synchronized and non-synchronized contexts.

Inconsistent 'AtomicFieldUpdater' declaration   New in this release

Reports issues with AtomicLongFieldUpdater, AtomicIntegerFieldUpdater, or AtomicReferenceFieldUpdater fields (the java.util.concurrent.atomic package).

Instantiating a 'Thread' with default 'run()' method   New in this release

Reports instantiations of Thread or an inheritor without specifying a Runnable parameter or overriding the run() method.

Lock acquired but not safely unlocked   New in this release

Reports java.util.concurrent.locks.Lock resources that are not acquired in front of a try block or not unlocked in the corresponding finally block.

Method with single 'synchronized' block can be replaced with 'synchronized' method   New in this release

Reports methods whose body contains a single synchronized statement.

Nested 'synchronized' statement   New in this release

Reports nested synchronized statements.

Non-atomic operation on 'volatile' field   New in this release

Reports non-atomic operations on volatile fields.

Non-private field accessed in 'synchronized' context   New in this release

Reports non-final, non-private fields that are accessed in a synchronized context.

Non-thread-safe 'static' field access   New in this release

Reports access to static fields that are of a non-thread-safe type.

Static initializer references subclass   New in this release

Reports classes that refer to their subclasses in static initializers or static fields.

Synchronization on 'getClass()'   New in this release

Reports synchronization on a call to getClass().

Synchronization on 'static' field   New in this release

Reports synchronization on static fields.

Synchronization on 'this'   New in this release

Reports synchronization on this or class expressions.

Synchronization on a 'Lock' object   New in this release

Reports synchronized blocks that lock on an instance of java.util.concurrent.locks.Lock.

Synchronization on a non-final field   New in this release

Reports synchronized statement lock expressions that consist of a non-final field reference.

Synchronization on an object initialized with a literal   New in this release

Reports synchronized blocks that lock on an object initialized with a literal.

Synchronization on local variable or method parameter   New in this release

Reports synchronization on a local variable or parameter.

Unconditional 'wait()' call   New in this release

Reports wait() being called unconditionally within a synchronized context.

Unsynchronized method overrides 'synchronized' method   New in this release

Reports non-synchronized methods overriding synchronized methods.

Volatile array field   New in this release

Reports array fields that are declared volatile.

Last modified: 11 September 2024