In a thread, I have a while loop that runs until the thread is interrupted, with a delay between all iterations. But, when I try to interrupt it inside the class, the server stops (Using Thread.currentThread().interrupt(). Here's the error : Code: [10:52:20] [Server thread/ERROR]: Encountered an unexpected exception java.lang.InterruptedException: sleep interrupted at java.lang.Thread.sleep(Native Method) ~[?:1.8.0_91] at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:540) [spigot-1.8.8.jar:git-Spigot-e4d4710-e1ebe52] at java.lang.Thread.run(Unknown Source) [?:1.8.0_91] [10:52:20] [Server thread/ERROR]: This crash report has been saved to: C:\Users\Moddingear\Desktop\Dev\BungeeCord\Serveur 1\.\crash-reports\crash-2016-06-04_10.52.20-server.txt [10:52:20] [Server thread/INFO]: Stopping server Yet the interrupted thread is running in another thread... Why ? So how should I interrupt/stop a thread ? SOLUTION : Use break; in the catch of Thread.currentThread.sleep(); Use a boolean in your class to be accessible from another class that can clean up all of it's references.