Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java | Threads |您应该使用System.exit()还是提前停止线程?_Java_Multithreading_Exit - Fatal编程技术网

Java | Threads |您应该使用System.exit()还是提前停止线程?

Java | Threads |您应该使用System.exit()还是提前停止线程?,java,multithreading,exit,Java,Multithreading,Exit,当有多个线程(无限期)运行并忽略“清理”程序的可能必要性时 调用系统是否安全。退出(0)来自任何线程,而之前没有“杀死”所有(其他)线程?你说的安全是什么意思?它会停止所有线程和进程,程序会被正确终止,还是会有任何类型的“不必要的副作用”,人们甚至不会注意到?我知道这有点含糊不清,但我只是想确定一下。System.exit()会杀死进程,并随之杀死所有子进程及其线程。因此,之后将不会留下任何内容。它肯定会停止所有线程并关闭所有资源。因此,程序是“正确”终止的,因为您没有资源泄漏。但是假设其中一个

当有多个线程(无限期)运行并忽略“清理”程序的可能必要性时


调用
系统是否安全。退出(0)来自任何线程,而之前没有“杀死”所有(其他)线程?

你说的安全是什么意思?它会停止所有线程和进程,程序会被正确终止,还是会有任何类型的“不必要的副作用”,人们甚至不会注意到?我知道这有点含糊不清,但我只是想确定一下。System.exit()会杀死进程,并随之杀死所有子进程及其线程。因此,之后将不会留下任何内容。它肯定会停止所有线程并关闭所有资源。因此,程序是“正确”终止的,因为您没有资源泄漏。但是假设其中一个线程正在编写一个文件:Stase.ExtE.()将在写入过程中间杀死该线程,可能使文件处于无效状态。从“只生成有效文件/输出/网络通信”的意义上讲,这是不安全的。是的……设计您的整个系统以抵抗外部影响(如电源故障、“kill-9”、“结束进程”等)是一个非常好的主意。如果你这样做,你可以通过exit()轻松终止应用程序,这是一个很好的副作用:)努力设计,使意外的进程终止不会造成持久的损害(例如,在启动时清除/检查内容的正确性/健全性,而不是陷入“关机时清理”的错误咒语中)。