java怎么强行终止程序

java怎么强行终止程序,第1张

在java程序中,可以使用java.lang.System的exit方法来终止程序的执行,

12345678

public static void main(String[] args) {System.out.println("开始进入程序...") //do somethingSystem.out.println("程序准备退出了!") System.exit(0) //下面这句话将不会打印出来System.out.println("程序已经退出了!")}

但是使用exit方法的本质是终止了JVM的运行,如果同时运行了另外一个程序,使用exit方法同样也会使该程序也终止,要避免此种情况可以使用interrupt()来中断退出一个独立运行的过程。对于多线程程序,必猛含迟须要关闭各个非守护线程。

1234567891011121314151617181920212223

public static void main(String[] args) {System.out.println("开始进入程序...") //do somethingnew Thread(){public void run() {while (true) {System.out.println("我是另外的线程...") try {Thread.sleep(2000) } catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace() }}}}.start()//获取man线枝李程Thread main = Thread.currentThread() System.out.println(main.getName()) main.interrupt() System.out.println("老燃main线程已经退出了,但是不影响其他线程运行!") }

只有在程序非正常退出时,才使用exit方法退出程序。

办法肯定有啦,最武断的办法就是直接调用Process类的destroy方法,该子进程就被杀死。当然这是最底层的办法,使用中还需要包装,比如用循环和sleep来计时,超时了才调用destroy。也可以根据实际情况,做成异步调用(让这个进程在单独的线程中运行),这样你的主程序就不会被挂起了。

以上这些包装,其实在apache commons项目里已经有这样的库了,叫commons-exec,用它最方便,毕竟包装它们还是苦差事(涉及到多线程,新开一个进程,Java中需要再开三个线程来处理进程的三个数据流,分别是标准输入,标准输出和错误输出)。commons-exec库提供了监视狗Watchdog来圆改设监视进程的执行超时,同时也还实现厅薯了同步和异步功能。建议你用它,如果只求简单快扮腔者速解决问题,自己简单地使用循环和Thread.sleep(1000)来计时,超时就destroy也行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12316796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存