Sounds like you have a stray
thread that is not shutting down. Does any of your code start up threads (hope not, that's a Java EE non-no). One way to find out is, after hitting CTRL-C, wait a minute, then ask for a Java thread dump (CTRL-\). Examine the threads that are running, look for threads whose stack traces include your code; that should give you some clue as to what is causing the problem.