If at all possible, simply get to the end of all your methods and let all your threads die. That is the simplest way to exit an application.
System.exit(i) is a bit vicious; the problem you can get is that if you call it in one
thread, then all the other threads will stop too, and you may end up with loose ends, or files not completely written, or something. Using EXIT_ON_CLOSE on a JFrame can be a bit vicious too.
You really want to clear up all the loose ends in every thread, let all their while loops finish, finish any writing to files etc, then let all the non-daemon threads die.
Anybody else?