基于JUC线程池的使用ExecutorService

基于JUC线程池的使用ExecutorService

往往采用多线程目的都是为了提高程序效率,提高系统使用性。但是频繁的创建和销毁线程本身就是一个有损效率的事。所以java的JUC就提供了线程池的使用。
线程池 :提前创建好多个线程放入线程池中,使用时直接获取,使用完成放回线程池。可以避免频繁创建和销毁线程,实现重复利用。
好处:

  • 提高了响应效率(减少了创建线程时间)
  • 降低资源消耗(重复利用线程池里面线程,不再是创建)
  • 便于管理。
    corePoolSize : 核心池大小
    maximumPoolSize : 最大线程数
    keepAliveTime :线程没有任务多久后会停止

JDK5.0起提供了相关线程池API : ExecutorsExecutorService

ExecutorService真正的线程池接口,继承了Executor
常见的实现类 ThreadPoolExecurtor。

  • void executor(Runable runable) 线程池启动线程。(属于Executor类方法)
  • void shutdown() 关闭连接池(ExecutorService接口方法)
    Executors 工具类、线程池的工厂类,用于创建并返回不同类型的线程池。注意区分Executor

在这里插入图片描述

实现步骤

  1. 创建线程池服务
  2. 执行线程

实现:

    // 线程类
    static class ThreadTest implements Runnable{
    
    
        public void run() {
    
    
            System.out.println(Thread.currentThread().getName()+":执行了");
        }
    }
    
   // 执行类
       public static void main(String[] args) {
    
    
        // 创建线程服务,构造线程池为3
        ExecutorService executorService = Executors.newFixedThreadPool(3);
        // 启动线程
        executorService.execute(new ThreadTest());
        executorService.execute(new ThreadTest());
        executorService.execute(new ThreadTest());
        executorService.execute(new ThreadTest());
    }

结果:定义了线程池为3,则4个线程使用线程池中的3个线程。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_31142237/article/details/115287418