更新时间:2023-05-31 来源:黑马程序员 浏览量:
在Java中,停止线程的正确方法通常是使用协作方式,而不是强制性地终止线程。强制性终止线程可能会导致资源泄漏或数据不一致等问题。下面是一个演示如何正确停止线程的代码示例:
public class MyThread implements Runnable { private volatile boolean running = true; public void stopThread() { running = false; } @Override public void run() { while (running) { // 线程的业务逻辑 } } }
在上面的代码中,MyThread类实现了Runnable接口,并包含一个running标志,用于控制线程是否继续执行。stopThread方法被调用时,它将将running标志设置为false,从而终止线程。
接下来我们再看一个使用上述线程类的示例:
public class Main { public static void main(String[] args) { MyThread myThread = new MyThread(); Thread thread = new Thread(myThread); thread.start(); // 停止线程的逻辑 try { Thread.sleep(1000); // 假设等待1秒 } catch (InterruptedException e) { e.printStackTrace(); } myThread.stopThread(); // 停止线程 // 等待线程结束 try { thread.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("线程已停止"); } }
在上述示例中,我们创建了一个MyThread实例,并将其传递给Thread构造函数来创建一个新的线程。然后,我们调用myThread.stopThread()方法停止线程。为了确保线程已经停止,我们使用thread.join()方法等待线程结束。
请注意,running标志被声明为volatile,这是为了确保线程之间的可见性。这样做可以确保线程在检查 running标志时能够看到最新的值。
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19