org.sonar.l10n.java.rules.squid.S2151.html Maven / Gradle / Ivy
The newest version!
Running finalizers on JVM exit is disabled by default. It can be enabled with System.runFinalizersOnExit
and Runtime.runFinalizersOnExit
, but both methods are deprecated because they are are inherently unsafe.
According to the Oracle Javadoc:
It may result in finalizers being called on live objects while other threads are concurrently manipulating those objects, resulting in erratic behavior or deadlock.
If you really want to be execute something when the virtual machine begins its shutdown sequence, you should attach a shutdown hook.
Compliant Solution
public static void main(String [] args) {
Runtime.addShutdownHook(new Runnable() {
public void run(){
doSomething();
}
});
//...
See
- CERT, MET12-J - Do not use finalizers
© 2015 - 2025 Weber Informatics LLC | Privacy Policy