如何监控线程池中的子线程是否执行完毕

shutdownNow试图停止当前正执行的task,并返回尚未执行的task的list

使用 fixedThreadPool.shutdown() 防止新任务提交到线程,已经提交的继续执行
通过线程池的 isTerminated() 方法不断检测,线程池中的任务是否都执行完成

shutdown调用后,不可以再submit新的task,已经submit的将继续执行。

代码

public class ThreadPool {

    static ExecutorService fixedThreadPool;
    static {
        fixedThreadPool = Executors.newFixedThreadPool(10);
    }

    public static void Threads() {

        fixedThreadPool.execute(new Runnable() {

            @Override
            public void run() {

                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("线程执行内容");

            }
        });
    }

    public static void main(String[] args) {

        for (int i = 1; i <= 100; i++) {
            Threads();
        }
        fixedThreadPool.shutdown();
        while (true) {
            if (fixedThreadPool.isTerminated()) {
                System.out.println("所有子线程执行完毕");
                break;
            }
        }
    }
}

   版权声明:本文为原创文章,版权归本站所有,欢迎分享本文,转载请保留出处!

发表留言

人生在世,错别字在所难免,无需纠正。

icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif