I would like to somehow log every time Thread.interrupt() is called, logging which Thread issued the call (and its current stack) as well as identifying information about which Thread is being interrupted.
Is there a way to do this? Searching for information, I saw someone reference the possibility of implementing a security manager. Is this something that can be done at runtime (e.g., in an Applet or Web Start client), or do you need to tool the installed JVM to do this?
Or is there a better way to do this?
As a quick hack, this was a lot easier to do than I thought it would be. Since this is a quick hack, I didn’t do things like ensure that the stack trace is deep enough before dereferencing the array, etc. I inserted the following in my signed Applet’s constructor:
and the
dumpThreadStackmethod is as follows:I could never, of course, leave this in production code, but it sufficed to tell me exactly which thread was causing an
interrupt()that I didn’t expect. That is, with this code in place, I get a stack dump for every call toThread.interrupt().