美文网首页
线程停止总结

线程停止总结

作者: xbmchina | 来源:发表于2018-12-18 23:03 被阅读0次

1 单线程停止

public class ThreadStopSafeInterrupted {
    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread() {
            @Override
            public void run() {
                while (true) {
                    // 使用中断机制,来终止线程
                    if (Thread.currentThread().isInterrupted()) {
                        System.out.println("Interrupted ...");
                        break;
                    }
 
                    try {
                        Thread.sleep(3000);
                    } catch (InterruptedException e) {
                        System.out.println("Interrupted When Sleep ...");
                        // Thread.sleep()方法由于中断抛出异常。
                        // Java虚拟机会先将该线程的中断标识位清除,然后抛出InterruptedException,
                        // 因为在发生InterruptedException异常的时候,会清除中断标记
                        // 如果不加处理,那么下一次循环开始的时候,就无法捕获这个异常。
                        // 故在异常处理中,再次设置中断标记位
                        Thread.currentThread().interrupt();
                    }
 
                }
            }
        };
 
        // 开启线程
        thread.start();
        Thread.sleep(2000);
        thread.interrupt();//主线程发起中断
 
    }
 
}

2 线程池停止

   /**
     * 停止线程池中的所有线程
     */
    private void stopDownloadThreadTask() {
        try {
            this.fixedThreadPool.shutdown();//尝试停止所有线程
            if(!this.fixedThreadPool.awaitTermination(5 * 1000, TimeUnit.MILLISECONDS)){
                this.fixedThreadPool.shutdownNow();//规定时间内还未停止,再次请求停止
            }
        } catch (InterruptedException e) {
            logger.error("awaitTermination interrupted: " + e);
            this.fixedThreadPool.shutdownNow();//停不了就再停止一次。
        }

    }

相关文章

  • 线程停止总结

    1 单线程停止 2 线程池停止

  • 多线程_2_停止和暂停

    线程停止 停止线程是在多线程开发时很重要的技术点,掌握线程停止技术可以对线程的停止进行有效的处理。 停止线程的方法...

  • java并发之守护线程

    java中有两种线程,用户线程和守护线程用户线程:主线程停止时,用户线程不会停止守护线程:主线程停止时,守护线程也...

  • Java多线程核心技术笔记1

    线程停止 判断线程是否停止 测试当前线程是否停止,是指调用该方法的线程是否停止。如果当前状态为已停止,调用该方法返...

  • Java中如何正确停止线程?两种停止线程最佳方法

    如何正确停止线程 使用 interrupt 来通知,而不是强制 1:普通情况停止线程 通知停止线程thread.i...

  • 线程状态

    线程的5个状态 目录 线程停止 线程休眠 线程礼让(不重要) 线程强制执行 线程状态观测 1. 线程停止 Warn...

  • 深入理解Java中停止线程

    一.停止线程会带来什么? 对于单线程中,停止单线程就是直接使用关键字return或者break,但是在停止多线程时...

  • 深入理解Java中停止线程

    一.停止线程会带来什么? 对于单线程中,停止单线程就是直接使用关键字return或者break,但是在停止多线程时...

  • Java 中如何正确停止线程

    背景 这里将着重描述如何停止一个线程,同时,顺带对其他线程方法如join、yield、wait方法也做一个总结。 ...

  • 停止线程,守护线程, join方法

    停止线程 守护线程 join方法

网友评论

      本文标题:线程停止总结

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