美文网首页
安全的终止线程

安全的终止线程

作者: tingshuo123 | 来源:发表于2020-09-23 16:51 被阅读0次

安全的终止线程

如果想终止线程最好不要使用 stop 方法,因为 stop 方法在终结一个线程时不会保证线程的资源正常释放,通常是没有给予线程完成资源释放工作的机会,因此会导致程序可能工作在不确定状态下。

终止线程最好使用线程中断标识 isInterrupt 或者自定义一个 boolean 变量来控制是否需要停止任务并终止该线程。

Shutdown.java

import java.util.concurrent.TimeUnit;

/**
 * 使用标识安全的终止线程
 */
public class Shutdown {
    public static void main(String[] args) throws InterruptedException {
        Runner one = new Runner();
        Thread countThread = new Thread(one, "CountThread");
        countThread.start();
        TimeUnit.SECONDS.sleep(1);
        countThread.interrupt();
        Runner two = new Runner();
        countThread = new Thread(two, "CountThread");
        countThread.start();
        TimeUnit.SECONDS.sleep(1);
        two.cancel();
    }

    private static class Runner implements Runnable {
        private long i;
        private volatile boolean on = true;

        /**
         * 通过线程中断标志位或则一个 boolean 变量来取消或者停止任务
         */
        @Override
        public void run() {
            while (on && !Thread.currentThread().isInterrupted()) {
                i++;
            }
            // 清理资源
            System.out.println("Count = " + i);
        }

        public void cancel() {
            on = false;
        }
    }
}

相关文章

  • 线程池(3)终止线程池原理

    终止线程池 一、终止线程池方法 1、 shutdown() 安全的终止线程池 2、 shutdownNow() 强...

  • 【多线程】——4.安全的终止线程

    安全的终止线程 线程正常执行结束,就会终止 除了正常结束外,还有什么方法终止? 设置线程终止标志 public c...

  • 线程终止

    线程终止 通过 stop 终止 已被 jdk 弃用,它可能导致线程安全问题。 通过 interrupt 终止 推荐...

  • 安全的终止线程

    安全的终止线程 如果想终止线程最好不要使用 stop 方法,因为 stop 方法在终结一个线程时不会保证线程的资源...

  • boy-learning-thread | 1.1.2 线程终止

    不正确的线程终止 - stop() 方法 stop: 终止线程,并且清除监视器锁的信息,但是可能导致线程安全问题,...

  • 多线程编程

    摘要 线程概念,线程与进程的区别与联系学会线程控制,线程创建,线程终止,线程等待了解线程分离与线程安全学会线程同步...

  • 为何stop()和suspend()方法不推荐使用

    1.stop()方法作为一种粗暴的线程终止行为,在线程终止之前没有对其做任何的清除操作,因此具有固有的不安全性。 ...

  • 多线程(三)

    线程终止 1.run方法正常退出,线程自然终止2.因为一个没有捕获的异常终止了run方法,线程意外终止 线程中断 ...

  • Java线程的中断

    引言 Java没有提供任何机制来安全地终止线程,但提供了中断机制,即thread.interrupt()方法。线程...

  • java多线程的停止和销毁

    要使任务和线程安全、快速、可靠的停止下来并不是一件容易的事情。java没有提供任何机制来安全的终止线程。但它提供了...

网友评论

      本文标题:安全的终止线程

      本文链接:https://www.haomeiwen.com/subject/fkyoyktx.html