当前位置: 首页 > 面试题库 >

终止Java程序

卢俭
2023-03-14
问题内容

我找到了终止(关闭或停止)Java程序的方法。我找到了两个解决方案。

  1. 使用 return; 当我想退出或终止程序执行时,添加它。

  2. 使用 System.exit() ; 有时我用它。我从This Question中了解了 Sytem.exit()

所以,我对他们都了解一点。但是我仍然对它们的实际工作方式感到困惑。请检查以下代码…

public class Testing {

public static void main(String... str) {
    System.out.println(1);
    System.exit(0);
    System.out.println(2);
    return;
 }
}

我确定 2不会出现。我想知道为什么return;或其他代码可以在的语句下面写System.exit(0);以及真正的定义是什么return;因为对我来说,return没有任何变量或值,这是很奇怪的事情)?


问题答案:

调用System.exit(0)(或与此有关的任何其他值)会导致Java虚拟机退出,从而终止当前进程。您传递的参数将是java进程将返回到操作系统的返回值。您可以从程序的任何位置进行此调用-
结果将始终相同-JVM终止。由于这只是在System类中调用静态方法,因此编译器不知道它将执行的操作,因此不会抱怨无法访问的代码。

return语句只是中止当前方法的执行。从字面上讲,这意味着 将控件返回到调用方法
。如果将方法声明为void(如您的示例中所示),则无需指定值,因为需要返回void。如果声明该方法返回特定类型,则必须指定要返回的值-
此值必须为指定的类型。

return仅当它在main正在执行的主类的方法内部时,才会导致该程序退出。如果尝试将代码放在其后,则编译器将抱怨无法访问的代码,例如:

public static void main(String... str) {
    System.out.println(1);
    return;
    System.out.println(2);
    System.exit(0);
}

不会使用大多数编译器进行编译-产生unreachable code指向第二个System.out.println调用的错误。



 类似资料:
  • 主要内容:1 什么是Java终止线程,2 Thread类终止线程的方法,3 Java终止线程的例子1,4 Java终止线程的例子2,5 Java终止线程的例子3,6 isInterrupted和interrupted方法1 什么是Java终止线程 如果任何线程处于睡眠或等待状态(即,调用sleep()或wait()方法),则在线程上调用interrupt()方法,会抛出InterruptedException中断睡眠或等待状态。如果线程未处于睡眠或等待状态,则调用interrupt()方法将执行

  • 请帮助我处理这个主线程/父线程将触发子线程。如果我们停止父线程/主线程,它还必须停止所有子线程/子线程 我想用中断做这件事,但做不到。请帮我把代码弄出来 以及如何确保所有子线程都已停止?有什么办法也可以做到这一点吗 提前谢谢! 我正在尝试这样做: 公共类ThreadTest1扩展Thread{私有静态最终记录器LOGGER=Logger.get记录器(mylogger); }

  • 我正在做一个关于模拟正在处理的CPU工作的项目。基本上,用户将输入一个工作,该工作的长度将被处理,优先级键(从-20到19,从-20开始以获得更高的优先级)。到目前为止,我已经让所有这些工作,除了程序正确终止。基本上,当我的优先级队列中的所有作业都被处理完时,我需要程序终止。当每个作业被处理时,它将从长度中减去,直到它为0。当它为0时,它将从优先级队列中移除。当没有剩余的作业(优先级队列是空的)时

  • 我有一个应用Gradle插件的项目。我的问题是,即使底层进程终止,它也不会终止:如果我运行这个: 带有仅包含系统的主系统。退出(0) 程序终止,但Gradle没有终止。当底层Java程序终止时,如何强制Gradle进程终止? 编辑:我知道我可以调用gradle——stop,但这需要另一个进程,这不是一个选项。

  • 我需要做一些多线程工作,并使用ExecutorService。newCachedThreadPool()并提交从队列中检索到的一些作业。 所以每个线程都创建一个的新实例,我在其中做一些工作。 我从另一个类调用我的,所以在提交所有作业后,我这样做: 但它只会杀死我的线程,即使工作没有完成,也没有等待。 也许是因为我在每个线程中创建了一个新的实例?

  • 问题内容: 如何使多线程python程序响应Ctrl + C键事件? 编辑: 代码是这样的: 我试图在所有线程上删除join(),但仍然无法正常工作。是否因为每个线程的run()过程中的锁段? 编辑: 上面的代码应该可以工作,但是当当前变量在5,000-6,000范围内并遍历以下错误时,它总是会中断 问题答案: 在启动主线程之前,将除主线程之外的每个线程都设为守护进程(在2.6或更高版本中,在2.