Sleep in einem Thread ist auch nicht gut. Wenn das System runter fährt, benachrichtigt es Dein Programm, das muss sich in einer kurzen Zeit beenden können, sonst wird es als eingefroren angezeigt.
Aber nur wenn sein Programm so geschrieben ist dass es beim Beenden auch sauber auf das Beenden des entsprechenden Threads wartet
Ansonsten beendet sich das Programm direkt