Threads always preserve class invariants when they are allowed to exit normally. Programmers often try to terminate threads abruptly when they believe that the task is accomplished, the request has been canceled, or the program or JVM needs to quickly shut down.
...