21xrx.com
2024-11-22 09:37:30 Friday
登录
文章检索 我的文章 写文章
Java关闭线程的方法及代码示例
2023-06-16 22:49:34 深夜i     --     --
Java 线程 关闭

在Java开发过程中,线程是非常常见的多线程并发编程的方式,而线程在执行完任务后,需要及时关闭,否则会造成系统资源的浪费和损害。本文将介绍Java关闭线程的方法及代码示例。

Java关闭线程的方法

Java提供了4种关闭线程的方法:

1. 使用stop()方法关闭线程(已废弃)

在Java早期版本中,使用stop()方法来关闭线程是比较常见的方式,但是该方法已被废弃,因为它可能会在关闭线程时导致数据丢失或其他不可预知的错误。

2. 使用interrupt()方法关闭线程

使用interrupt()方法可以关闭线程。调用该方法后,线程将会收到一个中断信号(InterruptedException),可以在catch块中捕获该异常并进行相应的处理。

3. 使用volatile变量控制线程运行状态

使用volatile变量可以控制线程的运行状态,在需要关闭线程时,将volatile变量置为false,线程就会退出。

4. 使用ExecutorService关闭线程

使用ExecutorService可以很方便地关闭线程。在创建线程池时,使用ThreadPoolExecutor类的shutdown()和shutdownNow()方法可以关闭线程池。

Java关闭线程的代码示例

现在我们来看一下Java关闭线程的代码示例:

1. 使用interrupt()方法关闭线程

public class MyThread extends Thread {

  @Override

  public void run() {

    super.run();

    try

      //执行任务

     catch (InterruptedException e) {

      System.out.println("线程已被中断");

    }

  }

}

MyThread myThread = new MyThread();

myThread.start();

//关闭线程

myThread.interrupt();

2. 使用volatile变量控制线程运行状态

public class MyThread3 extends Thread {

  private volatile boolean flag = true;

  public void setFlag(boolean flag)

    this.flag = flag;

  @Override

  public void run() {

    super.run();

    while (flag)

      //执行任务

  }

}

MyThread3 myThread3 = new MyThread3();

myThread3.start();

//关闭线程

myThread3.setFlag(false);

3. 使用ExecutorService关闭线程

ExecutorService executorService = Executors.newFixedThreadPool(10);

executorService.execute(new Runnable(){

  @Override

  public void run()

    //执行任务

});

//关闭线程池

executorService.shutdown();

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复