在网上找不到这个答案。当按下Ctrl + C时:
谢谢!
经典着作“Java Concurrency in Practice”有关于JVM关闭的章节(7.4),您应该阅读它,但这里有一些相关的引用:
如果任何应用程序线程(守护程序或非守护程序)仍在关闭时运行,它们将继续与关闭进程同时运行。
JVM不会尝试停止或中断在关闭时仍在运行的任何应用程序线程;当JVM最终停止时,它们会突然终止。
因此,线程不会被中断,但如果您愿意,可以从关闭钩子中明确地中断它们。
IMO,Daemon线程将在关闭过程中继续运行,JVM将在退出应用程序时终止所有正在运行的线程。我不认为,运行线程将获得InterruptedException
,因为JVM没有做任何额外的努力来停止运行线程。
http://www.tutorialspoint.com/java/lang/runtime_addshutdownhook.htm