Thread Termination Synchronization When a thread is created, it can be either in 'detached' state, or in 'join-able' state. 'Join-able' state means that when the thread exits, it is not fully cleaned-up - another thread has to 'join' the exiting thread. Joining a thread means waiting until this thread exits. 'Detached' state means that when a thread exits, it cannot be joined, and its resources are immediately freed.