首页 > 后端开发 > 正文

如何正确结束Java线程

2024-04-16 21:40:59 | 我爱编程网

如何正确结束Java线程相关内容,小编在这里做了整理,希望能对大家有所帮助,关于如何正确结束Java线程信息,一起来了解一下吧!

本文目录一览:

如何正确结束Java线程

如何正确结束Java线程

1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。

2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。

3. 使用interrupt方法中断线程。

1. 使用退出标志终止线程

当run方法执行完后,线程就会退出。但有时run方法是永远不会结束的。如在服务端程序中使用线程进行监听客户端请求,或是其他的需要循环处理的任务。在这种情况下,一般是将这些任务放在一个循环中,如while循环。如果想让循环永远运行下去,可以使用while(true){……}来处理。但要想使while循环在某一特定条件下退出,最直接的方法就是设一个boolean类型的标志,并通过设置这个标志为true或false来控制while循环是否退出。下面给出了一个利用退出标志终止线程的例子。

package chapter2;

public class ThreadFlag extends Thread

{

public volatile boolean exit = false;

public void run()

{我爱编程网

while (!exit);

}

public static void main(String[] args) throws Exception

{

ThreadFlag thread = new ThreadFlag();

thread.start();

sleep(5000); // 主线程延迟5秒

thread.exit = true; // 终止线程thread

thread.join();

System.out.println("线程退出!");

}

}

在上面代码中定义了一个退出标志exit,当exit为true时,while循环退出,exit的默认值为false.在定义exit时,使用了一个Java关键字volatile,这个关键字的目的是使exit同步,也就是说在同一时刻只能由一个线程来修改exit的值,

2. 使用stop方法终止线程

使用stop方法可以强行终止正在运行或挂起的线程。我们可以使用如下的代码来终止线程:

thread.stop();

虽然使用上面的代码可以终止线程,但使用stop方法是很危险的,就象突然关闭计算机电源,而不是按正常程序关机一样,可能会产生不可预料的结果,因此,并不推荐使用stop方法来终止线程。

3. 使用interrupt方法终止线程

使用interrupt方法来终端线程可分为两种情况:

(1)线程处于阻塞状态,如使用了sleep方法。

(2)使用while(!isInterrupted()){……}来判断线程是否被中断。

在第一种情况下使用interrupt方法,sleep方法将抛出一个InterruptedException例外,而在第二种情况下线程将直接退出。下面的代码演示了在第一种情况下使用interrupt方法。

package chapter2;

public class ThreadInterrupt extends Thread

{

public void run()

{

try

{

sleep(50000); // 延迟50秒

}

catch (InterruptedException e)

{

System.out.println(e.getMessage());

}

}

public static void main(String[] args) throws Exception

{

Thread thread = new ThreadInterrupt();

thread.start();

System.out.println("在50秒之内按任意键中断线程!");

System.in.read();

thread.interrupt();

thread.join();

System.out.println("线程已经退出!");

}

}

上面代码的运行结果如下:

在50秒之内按任意键中断线程!

sleep interrupted

线程已经退出!

在调用interrupt方法后, sleep方法抛出异常,然后输出错误信息:sleep interrupted.

注意:在Thread类中有两个方法可以判断线程是否通过interrupt方法被终止。一个是静态的方法interrupted(),一个是非静态的方法isInterrupted(),这两个方法的区别是interrupted用来判断当前线是否被中断,而isInterrupted可以用来判断其他线程是否被中断。因此,while (!isInterrupted())也可以换成while (!Thread.interrupted())。

如何正确结束Java线程

java运行时死循环了怎么用命令符把它停止掉?

java运行出现死循环时,在dos命令行界面下,可以直接使用ctrl+c的组合键来停止程序,ctrl+c组合键在dos命令行界面中可以不用等待程序正常运行结束,直接终止程序;还可以直接点击dos命令行界面窗口的关闭按钮来结束程序。在开发工具eclipse或者Myeclipse中,可以直接点击运行控制台中的红色按钮来结束程序。

如何正确结束Java线程

java中终止程序的执行

我爱编程网(https://www.52biancheng.com)小编还为大家带来java中终止程序的执行的相关内容。

方案操作如下:

(1)让程序在一个单独的线程中运行,然后在终止时,可以用线程的终止方法来结束它。

(2)退出Java程序时尽量不要使用java.lang.System的exit方法。Exit 方法可以终止JVM,从而终止程序,但如果同时运行了另一个Java程序,使用exit方法就会让该程序也关闭,这显然不是希望看到的情况!!!!

要退出Java程序,可以使用destory()退出一个独立运行的过程。对于多线程程序,必须要关闭各个非守护线程。

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

以上就是如何正确结束Java线程全部内容了,了解更多相关信息,关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“如何正确结束Java线程”相关推荐
java线程执行完后自己结束吗
java线程执行完后自己结束吗

java线程执行完后自己结束吗其实最佳答案的说法是有问题的,如果题主指的结束,是指方法块语句的执行结束的话,热心网友的说法是对的。但是对于线程本身,所有线程(包括主线程)在启动后都被CPU参照优先级交替调用,运行的顺序是无法预测的,但最后结束的一定是主线程。网上有部分说法,展示的代码运行结果,“主线程先于其他线程结束,并不影响其他线程的运行”只有后半部分是对的。因为方法体(不管是自定

2024-04-07 23:42:43
编写java程序时如何强制结束程序
编写java程序时如何强制结束程序

java停止执行程序如果在一个循环里,想退出这个循环请用break;如果在一个method中,想不执行下面的代码直接退出这个method请用return;如果你想要程序直接中断退出,不执行后面的任何代码,请用System.exit(0);java中终止程序的执行方案操作如下:(1)让程序在一个单独的线程中运行,然后在终止时,可以用线程的终止方法来结束它。(2)

2024-06-19 05:34:55
python如何结束一个死循环?
python如何结束一个死循环?

python如何结束一个死循环?在我们运行python程序时可能会遇到死循环,下面我们就来看一下结束python死循环的方法。每个IDE中的终止方式略有不同,下面介绍三个不同的IDE的终止方式:1、jupyternotebook出现死循环:这个时候需要按这个小方块才可以停止。2、python的shell中出现死循环:解决方法:按CTRL+C即可结束:3、在pyc

2024-01-13 17:19:18
java 后台线程main线程结束后不退出怎么回事,没分了还请帮忙
java 后台线程main线程结束后不退出怎么回事,没分了还请帮忙

java后台线程main线程结束后不退出怎么回事,没分了还请帮忙你的程序启动两个线程,一个是main,一个是你开的线程ADaemon,而ADaemon是以个守护线程,也就是说是在后台运行的。当你的线程sleep(2000)的时候,main先于ADaemon结束,所以System.out.println("thisshoouldalwaysrun?");看不见,假如不slee

2024-03-28 11:55:36
关于拍摄语言的编程模式,哪个说法正确?
关于拍摄语言的编程模式,哪个说法正确?

关于拍摄语言的编程模式,哪个说法正确?关于Python语言的编程模式,哪个说法正确(()。A、Python采用语句式交互编程模式B.Python采用函数式编程模式C、Python采用面向对象编程模式D、以上选项都正确D是正确的。Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了

2024-01-24 17:48:46
linux用什么命令结束后台进程
linux用什么命令结束后台进程

linux关闭java进程linux关闭javalinux关闭程序的命令?linux怎么终止进程命令呢,下面就让我们来看看吧。1、打开linux系统,在linux的桌面的空白处右击。?2、在弹出的下拉选项里,点击打开终端即可进入命令行。?3、在终端窗口中打开一个Python程序。?4、在程序运行时按下快捷键crtl+c就可以终止指令程序。

2024-05-24 00:58:44
Java 的开始与结束代码是什么?
Java 的开始与结束代码是什么?

Java的开始与结束代码是什么?在Java中,通常需要定义一个类并编写main方法作为程序的入口点。因此,Java程序的开始和结束代码如下:开始代码:```javapublicclassMain{publicstaticvoidmain(String[]args){//在这里编写程序代码}}```以上代码创建了一个名为Main的类,并包含一个静态的、

2024-05-27 19:23:40
java如何计算线程池中线程同步和异步运行时间
java如何计算线程池中线程同步和异步运行时间

java获取运行时间很多朋友都想知道java怎么获取运行时间?下面就一起来了解一下吧~第一种是以毫秒为单位计算的。//伪代码long startTime=System.currentTimeMillis(); //获取开始时间doSomeThing(); //测试的代码段long endTime=System.currentTimeMillis(); //获取结束时间System.

2024-06-15 21:37:05