13. 线程池
package com.gf.demo12; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 一、线程池 : 提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。 * * 二、线程池的体系机构 : * java.util.concurrent.Executor : 负责线程的使用与调度的根接口 * |--ExecutorService 子接口 : 线程池的主要接口 * |--ThreadPoolExecutor 线程池的实现类 * |--ScheduledExecutorService 子接口 : 负责线程的调度 * |--ScheduledThreadPoolExecutor : 继承ThreadPoolExecutor ,实现ScheduledExecotorService * * 三、工具类: Executors * ExecutorSercice newFixedThreadPool() : 创建固定大小的线程池 * ExecutorSercice newCachedThreadPool() : 缓存线程池,线程池的数量不固定,可以根据需求自动的更改数量。 * ExecutorSercice newSingleThreadExecutor() : 创建单个线程池,线程池中只有一个线程 * * * ScheduledExecutorService newScheduledThreadPool() : 创建固定大小的线程,可以延迟或定时执行任务。 * */ public class TestThreadPool { public static void main(String[] args) { //1. 创建线程池 ExecutorService pool = Executors.newFixedThreadPool(5); ThreadPoolDemo tpd = new ThreadPoolDemo(); //2. 为线程池中的线程分配任务 for(int i = 0 ; i < 10 ; i++){ pool.submit(tpd); } //3. 关闭线程池,平和的方式关闭 pool.shutdown(); } } class ThreadPoolDemo implements Runnable{ private int i = 0; @Override public void run() { while(100 >= i){ System.out.println(Thread.currentThread().getName() + " : " + i++); } } }
关注我的公众号,精彩内容不能错过
作者:程序员果果
出处:blog.itwolfed.com
欢迎关注公众号——《程序员果果》 ,分享SpringBoot、SpringCloud、Dubbo、Golang、Docker相关知识与技巧。
原创 Java 博客,点我看看?