线程池

作者: 何几时 | 来源:发表于2020-12-01 22:11 被阅读0次

    思路:提前创建好多个线程,放入线程池中,使用时直接获取,用完放回池中。

    好处:

    1. 提高响应时间(减少线程创建时间)
    2. 降低资源消耗(重复利用线程池中的线程,不需要每次都创建)
    3. 便于管理(还没用到)
      • corePoolSize:核心池的大小
      • maximumPoolSize:最大线程数
      • keepAliveTime:线程没有任务时最多保持多长时间后会终止

    API:ExecutorService 和 Executors

    ExecutorService是真正的线程池接口。常见的子类 ThreadPoolExecutor

    • void excute(Runnable command):执行任务,没有返回值,一般用来执行Runnable
    • <T> Future <T> submit(Callable<T> task):执行任务,有返回值,一般用来执行Callable
    • void shutdown():关闭线程池

    Executors:工具类、线程池的工厂类,用于创建并返回不同类型的线程池

    例程如下

    package demo04_synchronized;
    
    import java.util.concurrent.Executor;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ForkJoinPool;
    
    // 测试线程池
    public class TestPool {
    
        public static void main(String[] args) {
            // 1.创建服务,创建线程池
            // newFixedThreadPool(para) ---> 其中 para参数 是线程池大小
            ExecutorService service = Executors.newFixedThreadPool(10);
    
            service.execute(new MyThread());
            service.execute(new MyThread());
            service.execute(new MyThread());
            service.execute(new MyThread());
    
            // 2.关闭链接
            service.shutdownNow();
        }
    }
    
    class MyThread implements Runnable{
    
        @Override
        public void run() {
    
            System.out.println(Thread.currentThread().getName());
    
        }
    }
    

    相关文章

      网友评论

          本文标题:线程池

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