java多线程中如何有效的停止当前线程。

java多线程中如何有效的停止当前线程。,第1张

中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其当前的 *** 作。

线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序。虽然初次看来它可能显得简单,但是,你必须进行一些预警以实现期望的结果。你最好还是牢记以下的告诫。

首先,忘掉Threadstop方法。虽然它确实停止了一个正在运行的线程,然而,这种方法是不安全也是不受提倡的,这意味着,在未来的JAVA版本中,它将不复存在。

中断线程最好的,最受推荐的方式是,使用共享变量(shared variable)发出信号,告诉线程必须停止正在运行的任务。线程必须周期性的核查这一变量(尤其在冗余 *** 作期间),然后有秩序地中止任务。

我详细说一下吧

java程序启动之后,JVM(java虚拟机)会实例化一个Runtime类,这是一个运行时类实例,包含这个java程序运行的所有信息,一个程序会实例化一个Runtime类且只能实例化一个Runtime类。我们可以通过这个Runtime类实例 *** 作程序的运行。它的exit(int status)方法会终止程序的运行。例:

RuntimegetRuntime()exit(0);

其中参数status表示状态,0表示正常退出,非0表示异常退出。非0参数有什么用呢?

addShutdownHook(Thread hook)方法可以将一个Thread可程序的关闭hook(挂/联系)起来,程序退出前,会执行这个方法,这样我们可以根据退出状态作相应的善后 *** 作。

另外,Systemexit(int status)也是调用这个Runtime类实例的退出方法来间接实现程序的退出的。

再加一点,Runtime类可以创建子进程,如下:

Process p=RuntimegetRuntime()exec("notepad");

这个语句将会创建一个记事本程序(它是Runtime类创建的子进程)

pdestroy();

这个语句终止刚才创建的子进程。

你所说的所有循环是指整个循环体吧,break是结束整个循环体,continue是结束单次循环!

自己懒得敲代码了,下面是copy别人的回答让帮你理解下:

比方说:

while(x++ < 10)

{

if(x == 3)

{

break;

}

printf("%d\r\n", x);

}

结果是输出 1 2 就退出了整个while循环

但是如果使用continue

while(x++ < 10)

{

if(x == 3)

{

continue;

}

printf("%d\r\n", x);

}

结果是:1 2 4 5 6 7 8 9 10 可见他仅仅是不输出3,因为他结束了本次循环

所以说两句话都是正确的

处理数据的程序段用try catch包围起来

1、如果出问题了,记录到当前处理数据的节点,下次再启动,读取上次的节点接着处理。

2、如果没出问题,普通的java程序运行完毕,自动就会结束进程了,实在不行,用Systemexit(0);退出程序

以上就是关于java多线程中如何有效的停止当前线程。全部的内容,包括:java多线程中如何有效的停止当前线程。、如何关闭java程序、java中 程序执行到break语句时一定会结束所有循环。 程序执行到continue语句时会结束当前循环。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10050452.html

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

发表评论

登录后才能评论

评论列表(0条)

保存