赞
踩
要停止一个正在运行的Java线程,有以下几种方法:
- public class MyThread extends Thread {
- private volatile boolean stop = false;
-
- public void stopThread() {
- stop = true;
- }
-
- public void run() {
- while (!stop) {
- // 线程逻辑
- }
- }
- }
在这个示例中,我们创建了一个MyThread类,它继承自Thread类。这个类包含了一个名为stop的volatile变量,这个变量被用来作为线程运行状态的标志位。我们还实现了一个stopThread()方法来设置这个标志位,以便停止线程运行。
- public class MyThread extends Thread {
- public void run() {
- while (!Thread.currentThread().isInterrupted()) {
- // 线程逻辑
- }
- }
- }
在这个示例中,我们使用Thread.currentThread().isInterrupted()方法来检查线程是否应该停止运行。当另一个线程调用了MyThread的interrupt()方法时,当前线程就会抛出一个InterruptedException异常,从而使线程停止运行。
- public class MyThread extends Thread {
- public void run() {
- while (true) {
- try {
- // 线程逻辑
- } catch (InterruptedException ex) {
- break;
- }
- }
- }
- }
在这个示例中,我们创建了一个MyThread类,它继承自Thread类。在run()方法中,我们使用while(true)来表示线程应该一直运行下去,直到被中断。当另一个线程调用了MyThread的stop()方法时,线程就会立即停止运行。这种方法可能会导致线程在执行过程中突然停止,从而导致数据丢失和其他意外情况。因此,不建议使用这种方法。
总之,在Java中停止一个正在运行的线程主要有以下三种方法:设置标志位、使用interrupt()方法和使用stop()方法。其中,前两种方法是常用的方法,尽量避免使用stop()方法。
总结:
1、使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。
2、使用stop方法强行终止,但是不推荐这个方法,因为stop和suspend及resume一样都是过期作 废的方法。
3、使用interrupt方法中断线程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。