• 【常用API】之线程池ThreadPoolExecutor


    线程池:ThreadPoolExecutor

    默认先创建好指定个数的线程,放入线程池中。
    需要使用的时候,先到池子里面,那出来,使用。
    用完在还回去,不要销毁掉。

    它的消耗比创建销毁更少。

    具体实例见课堂代码。

    每一执行一批,就是ThreadPoolExecutor的大小。
    然后,结束一个,再进入一个。

    实例:

    ----创建线程类

    package com.xzm.线程池;
    
    //自定义线程类
    public class MyTask implements Runnable{
        
        //只是为了让大家看到是第几个线程
        private int num;
        public MyTask(int num) {
            this.num = num;
        }
    
        //重写
        @Override
        public void run() {
            System.out.println("正在执行task-"+this.num);
            //休眠一会
            try {
                Thread.currentThread().sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("task-"+this.num+",执行完毕!");
        }
    
    }

    ----在主函数中创建线程池

    package com.xzm.线程池;
    
    import java.util.concurrent.Executors;
    //导入需要的包文件
    import java.util.concurrent.ThreadPoolExecutor;
    
    //【线程池】
    public class Test {
    
        //主函数:主线程
        public static void main(String[] args) {
            
            //创建线程池,可以是类中的属性或静态属性或方法变量
            //这里就创建为方法中的变量
            //声明线程池 = (转成线程池对象)系统方法创建;
            ThreadPoolExecutor executor = (ThreadPoolExecutor)Executors.newFixedThreadPool(5);
            
            //循环往池子里面添加线程
            for(int i=1; i<=10; i++) {
                //创建新的线程
                MyTask mt = new MyTask(i);
                //添加到线程池中
                executor.execute(mt);
            }
            
            //停止接收新的任务
            executor.shutdown();
        }
    
    }
  • 相关阅读:
    稳如车!半个世纪过去了,康威定律依然适用
    task.factory.startnew()
    RabbitMQ基础知识
    NLog类库使用探索——详解配置
    C# winform开发嵌套Chrome内核浏览器(WebKit.net)开发(一)
    C#客户端嵌入Chrome浏览器的实现
    TLS/HTTPS 证书生成与验证
    SSL证书/TLS证书是什么
    htmlparser
    动软代码生成器之模板功能介绍
  • 原文地址:https://www.cnblogs.com/jiarenanhao/p/14134250.html
Copyright © 2020-2023  润新知