如何在JAVA中让一个线程死亡或结束

如题所述

当线程执行完毕或被其它线程杀死,线程就进入死亡状态,这时线程不可能再进入就绪状态等待执行。
线程进入死亡状态的方法有两种:
1、自然终止:正常运行run()方法后终止;
2、异常终止:调用stop()方法让一个线程终止运行。
如下代码:
public class ThreadDemo implements Runnable{
public void run() {
}
}
当run方法执行结束,即线程死亡(结束)。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-18
/** * JAVA里面如何使用一个线程死亡或结束. * */ public class T { public static void main(String args) { // 启动线程 MyThread thread = new MyThread(); new Thread(thread).start(); // 你的其它的工作,此时线程在运行中 // 你不想让线程干活了,停掉它 // 注意,这只是一个标志,具体线程何时停,并不能精确控制 thread.allDone = true; } } class MyThread implements Runnable { boolean volatile allDone = false; public void run() { // 每次循环都检测标志 // 如果设置停止标志时已经在循环里 // 则最长需要等待一个循环的时间才能终止 while (!allDone) { // 循环里的工作 } } } 修正,增加了 volatile 关键字,避免多个CPU出问题。本回答被提问者采纳

Java中如何停止一个线程
终止线程的三种方法:1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。3. 使用interrupt方法中断线程。 1. 使用退出标志终止线程 当run方法执行完后,线程就会退出。但...

如何令java线程池中线程超过5分钟时该线程自杀
如果线程任务是这种形式,使用thread.Interrupt 的方法来打断thread, 从而结束该thread的生命周期。

Java中如何终止运行中的线程?while(true){i++;}死循环是如何跳出的?
首先,可以使用volatile标志位。创建一个Runnable接口的实现类,其中定义一个volatile标志位,利用这个标志位控制线程的运行。在main方法中创建线程,适当时候修改标志位以终止线程。其次,可以使用interrupt()方法中断线程。调用interrupt()方法在当前线程中打一个停止标记,并非立即终止线程,而是通知目标线程希望...

java 怎么强制关闭 一个线程 ?
\\x0d\\x0a如果真的需要终止一个线程,可以使用以下几种方法: \\x0d\\x0a1、让线程的run()方法执行完,线程自然结束。(这种方法最好)\\x0d\\x0a\\x0d\\x0a2、通过轮询和共享标志位的方法来结束线程,例如while(flag){},flag的初始值设为真,当需要结束时,将flag的值设为false。(这种方法也...

Java中如何正确而优雅的终止运行中的线程
Java中终止线程的方式主要有三种:1、使用stop()方法,已被弃用。原因是:stop()是立即终止,会导致一些数据被到处理一部分就会被终止,而用户并不知道哪些数据被处理,哪些没有被处理,产生了不完整的“残疾”数据,不符合完整性,所以被废弃。So, forget it!2、使用volatile标志位 看一个简单的例子...

怎样在java中关闭多线程其中一个线程?让其他线程还正常运行?
Thread.currentThread().interrupt(); \/\/这个是获取当前线程并且中断当前线程。public void interrupt()中断线程如果当前线程没有中断它自己(这在任何情况下都是允许的),则该线程的 checkAccess 方法就会被调用,这可能抛出 SecurityException。 如果线程在调用 Object 类的 wait()、wait(long) 或 wait(long, int) 方...

如何优雅地结束一个线程?
1.使用标志 一种简单的方法是使用线程来指示线程是否正在运行,并使用此标志根据您的要求采取纠正措施,下面是一个示例代码,概述了如何使用标志来杀死Java线程。在上面的例子中。我们可以通过将运行变量设置为false来控制执行。在我们的示例中,我们使用AtomicBoolean了并发,如果您不想使用它(不推荐),您...

在java中什么办法可以让线程停止然后再重新启动它
1.你可以用布尔值来控制是否让线程运行。例:while(boolean isLive){} 当isLive为true线程就运行,否则不运行。2.你可以用对象。例:while(Object o != null)当对象存在的时候线程就运行,否则不运行!3.你可以用wait()方法来让线程等待,然后用notify()、notifyAll()在适当的时候唤醒线程、或者...

求教高手:java中如何暂停一个线程中的任务,在以后的可以恢复之前任务的...
可以用以下几种方法:interrupt():中断线程 stop():强迫线程停止执行。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致...

如何用Java比较安全的停止一个Windows由Java应用程序调用的外部程序进程...
Java中需要再开三个线程来处理进程的三个数据流,分别是标准输入,标准输出和错误输出)。commons-exec库提供了监视狗Watchdog来设监视进程的执行超时,同时也还实现了同步和异步功能。建议你用它,如果只求简单快速解决问题,自己简单地使用循环和Thread.sleep(1000)来计时,超时就destroy也行。

相似回答