美文网首页
自定义线程池

自定义线程池

作者: firststep | 来源:发表于2018-12-25 16:36 被阅读0次

自定义线程池的学习:

package StudyOne;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;

import org.apache.tomcat.util.threads.ThreadPoolExecutor;

public class ThreadPoolTest {
    public static void main(String[] args) {
        //阻塞队列  创建等待队列
        BlockingQueue<Runnable> bqr = new ArrayBlockingQueue<Runnable>(20);
        //corePoolSize: 核心线程数,默认情况下核心线程会一直存活,即使处于闲置状态也不会受存keepAliveTime限制。除非将allowCoreThreadTimeOut设置为true
        // maximumPoolSize: 线程池所能容纳的最大线程数。超过这个数的线程将被阻塞。当任务队列为没有设置大小的LinkedBlockingDeque时,这个值无效
        // keepAliveTime: 非核心线程的闲置超时时间,超过这个时间就会被回收
        // unit: 指定keepAliveTime的单位,如TimeUnit.SECONDS。当将allowCoreThreadTimeOut设置为true时对corePoolSize生效。
        // workQueue: 线程池中的任务队列.常用的有三种队列,SynchronousQueue,LinkedBlockingDeque,ArrayBlockingQueue。
        ThreadPoolExecutor pool = new ThreadPoolExecutor(3, 5, 50,TimeUnit.MILLISECONDS, bqr);
        Runnable test1 = new MyThead("test1");
        Runnable test2 = new MyThead("test2");
        Runnable test3 = new MyThead("test3");
        Runnable test4 = new MyThead("test4");
        Runnable test5 = new MyThead("test5");
        Runnable test6 = new MyThead("test6");
        pool.execute(test1);
        pool.execute(test2);
        pool.execute(test3);
        pool.execute(test4);
        pool.execute(test5);
        pool.execute(test6);
    }
    
}

class MyThead implements Runnable {
    public String Name;
    
    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public MyThead(String name) {
        setName(name);
    }

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "正在执行。。。"+getName());
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    
}

运行结果:
image.png

相关文章

  • 并发--共享模型之工具

    线程池 1.1 自定义线程池 先自定义任务队列 自定义线程池 测试: 定义拒绝策略接口: 1.2 ThreadPo...

  • 线程池模板

    线程池自定义工厂 线程池管理 使用

  • Thread

    队列 线程锁 多线程,线程池 队列 多线程爬虫示例 多线程 自定义线程 线程池

  • spring boot中设置异步请求默认使用的线程池

    1、自定义异步线程池,如果不自定义则使用自带的线程池(不是真正意义上的线程池,不会复用线程) 2、springbo...

  • 万字长文:带你透彻理解“线程池”

    目标 【理解】线程池的基本概念 【理解】线程池工作原理 【掌握】自定义线程池 【应用】java内置线程池 【应用】...

  • 线程池很容易理解的

    线程池介绍 并发队列 线程池原理分析 自定义线程池 文中部分代码使用 lambda 表达式以简化代码。 线程池 什...

  • 2019-03-13 自定义连接池

    连接池:即线程池要自定义先要了解线程池模型,即线程池的核心参数1.coresize核心线程池,即运行的线程2.ma...

  • 自定义线程池

    一、前言 前一节介绍了线程池基本参数和概念,下面说下如何自定义线程池。 二、自定义线程池 1、步骤 (1)编写任务...

  • Java线程池

    一、自定义线程池集成ThreadPoolExecutor 二、JDK自带的几种线程池 1、newFixedThre...

  • java线程池源码分析

    从线程池使用进行实现分析一.自定义线程池1.自定义线程池2.构造完成之后状态3.关键参数介绍二.执行任务1.exe...

网友评论

      本文标题:自定义线程池

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