博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中System.exit(status)和Runtime.getRuntime().halt(status)区别
阅读量:4111 次
发布时间:2019-05-25

本文共 1222 字,大约阅读时间需要 4 分钟。

System.exit(status);

Runtime.getRuntime().halt(status)

这两个都表示系统退出,那么他们有什么区别呢?

针对System.exit(status)解释如下:

Terminates the currently running Java Virtual Machine. Theargument serves as a status code; by convention, a nonzero statuscode indicates abnormal termination

针对Runtime.getRuntime().halt(status)解释如下:

Forcibly terminates the currently running Java virtual machine.  Thismethod never returns normally.

具体的代码测试如下:

用户自定义线程:

class UserThread implements Runnable {	@Override	public void run() {		System.out.println("***************UserThread  start********");		try {			Thread.sleep(1 * 1000l);			System.out.println("***************UserThread end********");		} catch (InterruptedException e) {			e.printStackTrace();		}	}}

 

针对System.exit(status)测试代码:

public static void main(String[] args) throws Throwable {	for (int i = 0; i < 10; i++) {		Thread t = new Thread(new UserThread());		Runtime.getRuntime().addShutdownHook(t);	}	System.exit(1);}

结果:

所有的线程都执行完成之后才会退出

 

针对Runtime.getRuntime().halt(status)测试如下:

public static void main(String[] args) throws Throwable {	for (int i = 0; i < 10; i++) {		Thread t = new Thread(new UserThread());		Runtime.getRuntime().addShutdownHook(t);	}	Runtime.getRuntime().halt(1);}

结论:

所有的线程都没有执行

转载地址:http://piqsi.baihongyu.com/

你可能感兴趣的文章
搞笑--一篇有趣的文章编译自一篇西班牙博客。有一位美丽的公主,被关押在一个城堡中最高的塔上,一条凶恶的巨龙看守着她,需要有一位勇士营救她…
查看>>
非常不错 Hadoop 的HDFS (Hadoop集群(第8期)_HDFS初探之旅)
查看>>
Tomcat启动错误,端口占用
查看>>
安卓模拟器请求本地资源,不修改hosts
查看>>
laravel 修改api返回默认的异常处理
查看>>
高德坐标转换百度坐标 javascript
查看>>
tp5封装通用的修改某列值
查看>>
laravel控制器与模型名称不统一
查看>>
vue登录拦截
查看>>
npm配置淘宝镜像仓库以及electron镜像
查看>>
linux设置开机自启动脚本的最佳方式
查看>>
VUE SPA 单页面应用 微信oauth网页授权
查看>>
phpstorm 集成 xdebug 进行调试
查看>>
npm和node升级的正确方式
查看>>
laravel事务
查看>>
springcloud 连续请求 500
查看>>
vue复用新增和编辑表单
查看>>
Ubuntu 16.04 apt-get更换为国内阿里云源
查看>>
laravel部署到宝塔步骤
查看>>
小程序获取access_token
查看>>