I have a Java application that I CAN'T EDIT that starts a java.lang.Thread
that has this run()
method:
public void run(){
while(true){
System.out.println("Something");
}
}
At a certain point in time I want to stop it. If I use Thread.interrupt()
it doesn't work.
If I use Thread.stop()
it works, but this method is deprecated (so its use is discouraged as it may be removed from JVM in new releases).
How to stop such uninterruptible threads in Java?
The java debugger will allow you to kill a thread by injecting an exception into it.
Start your Java process and have it listen on some port:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4444 <Your Program>
and connect the debugger with something like:
jdb -attach 127.0.0.1:4444
and issue the following command:
threads
to get a list of the running threads, and use the kill command to kill a running thread.
kill 0xe2e new java.lang.IllegalArgumentException("er");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With