Is this inside a web application? Because then you could use a Context Listener to stop the thread, clean the singleton when the web application is undeployed (as the Context Listener will be notified of such events).
If it is just inside an EJB module... I think the EJB spec does not like you creating your own threads... for these reasons among others. Not sure if there are any events/listeners for such modules. There were none last time I looked, but I have not used EJB in a long time :).
Good luck!
[Message sent by forum member 'greeneyed' (greeneyed)]
http://forums.java.net/jive/thread.jspa?messageID=254252