ThreadPoolExecutor 笔记(补充)

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

public class App {

    private ThreadPoolExecutor threadpool;

    public App(){
        /*参数依次是:
        corePoolSize     - 池中所保存的线程数,包括空闲线程。
        maximumPoolSize - 池中允许的最大线程数。
        keepAliveTime     - 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。
        unit             - keepAliveTime 参数的时间单位。
        workQueue         - 执行前用于保持任务的队列。此队列仅由保持 execute 方法提交的 Runnable 任务。
        handler         - 由于超出线程范围和队列容量而使执行被阻塞时所使用的处理程序。*/

        //规则:
        //1. 池中线程数量小于corePoolSize, 即使存在空闲线程,也启动新线程处理新任务;
        //2. 池中显成熟等于corePoolSize,则添加至workQueue;
        //3. 若此时连workQueue也满,但线程数小于maximumPoolSize, 则添加新线程处理新任务;
        //4. 若超过maximumPoolSize 则调用handler 处理
        //   DiscardOldestPolicy -> 放弃最末的处理请求
        threadpool = new ThreadPoolExecutor(2,3, 10, TimeUnit.
                SECONDS, new ArrayBlockingQueue(2),
                new ThreadPoolExecutor.DiscardOldestPolicy());
    }

    public void subMit(final int value){
        threadpool.execute(new Runnable(){

            @Override
            public void run() {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.print(value + "_hello\r\n");
            }
        });
    }

    public void shutdown() {
       threadpool.shutdown();
    } 

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        App app = new App();
        for(int i = 0; i < 5;i++){
            app.subMit(i);
        }
        //输出:当threadpool = new ThreadPoolExecutor(2,3, 10, TimeUnit.
        //SECONDS, new ArrayBlockingQueue(1),
        //3_hello
        //1_hello
        //0_hello
        //4_hello

        //输出:当threadpool = new ThreadPoolExecutor(2,3, 10, TimeUnit.
        //SECONDS, new ArrayBlockingQueue(2),
        //0_hello
        //1_hello
        //4_hello
        //3_hello
        //2_hello

        app.shutdown();
    }

}
时间: 2024-11-10 08:21:40

ThreadPoolExecutor 笔记(补充)的相关文章

STM32 FSMC学习笔记+补充(LCD的FSMC配置)

STM32 FSMC学习笔记+补充(LCD的FSMC配置) STM32 FSMC学习笔记 STM32 FSMC的用法--LCD

Android网络项目课程笔记-----补充

一. 数据上传 1. 登录 数据上传 + 安全(加密 ) 2. 评论 数据上传 + 数据过滤 3. 图片.音频或视频上传 任何资源都是二进制,二进制都可以转为String 使用到的技术: HTTP get请求 1. Android客户端向Server请求下载数据 2. Android客户端把数据上传到Server端 get   url + &key=value&key1=value1 弊端:上传数据量有限(IE 2k) 不安全 post:相对安全 上传数据量比get大 二. 数据缓存 显著

第九周读书笔记-补充

1.笔绘波形 3.直流电机开环调压调速系统模型搭建(可以以小组形式完成作业,每个小组成员参与讨论并共同完成模型搭建) 针对第三周作业中给出的直流电机模型参数,在PLECS中建立一个基于晶闸管整流电路的直流电机开环调压系统,能实现在开环情况下对电机从零速到额定转速的调速. 直流电机的机械特性曲线为: n=-3.32T+1909.9 (r/min) 其中1909.9=U/Keφ,则当U为变量,T为常量12时,有 N=-3.32*12+7.96*U 变化后为: U=(39.84+N)/7.96 又在整

异常笔记补充

异常(Throwable) 1.异常定义: 生活中的异常--有异于常态,和正常情况不太一样,有错误出现. Java中的异常--程序运行期间有可能出现的问题,阻止当前方法或作用域继续执行,即称之为异常. 2.分类: (1)错误(Error):主要包括虚拟机错误(VirtualMachineError)和线程四锁(ThreadDeath),出现后程序彻底崩溃 (2)异常(Exception):主要包括非检查异常(RuntimeException)和检查异常. 非检查异常主要包括:空指针异常(Null

《HTML5与CSS3基础教程》学习笔记 ——补充

在HTML5中,空元素结尾处的空格和斜杠是可选的,但是在XHTML中,必须有斜杠,所以最好每次都把斜杠写上去. disabled和required可以要属性值,也可以不要属性值 1)        有属性值:disabled=” disabled”  required=” required” 2)        无属性值:disabled.required,但是审查元素时是:disabled=””  required=”” 文件命名: 1)        文件名全部使用小写,这样方便访问者访问

TensorFlow学习笔记 补充1——InteractiveSession

InteractiveSession 大家有时候在阅读代码时会看见InteractiveSession而不是熟悉的Session,这是什么东东呢? 其实,它们只有一点不同..... InteractiveSession是默认的session,这就意味着你可以在不声明session的条件下直接使用run(),eval() .这在interactive shells 和 IPython notebooks 中非常方便! 上例子: 1 sess = tf.InteractiveSession() 2

GlusterFS分布式系统维护管理笔记补充

下面是在GlusterFS学习中总结的管理手册,希望这些能够对那些也是使用研究 GlusterFS 的人有些许的帮助. 1)管理说明 在解释系统管理时会提供实例,首先提供一个环境说明. 系统节点: IP 别名 Brick 192.168.2.100 server0 /mnt/sdb1 /mnt/sdc1 /mnt/sdd1 192.168.2.101 server1 /mnt/sdb1 /mnt/sdc1 /mnt/sdd1 192.168.2.102 server2 /mnt/sdb1 /mn

初识linux笔记

回环地址lo 摘自百度 三种网络模式 1.4-1.6  三种网络模式详解.note 由于linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费.那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有vmware workstations和virtual box等.在使用虚拟机软件的时候,很多初学者都会遇到很多问题,而vmware的网络连接问题是大家遇到最多问题之一.在学习交流群里面,几乎每天都会有同学问到这些问题,写这篇详解也是因为群里童鞋网络出故

传智播客 2015年 刘意_Java基础视频-深入浅出精华版 笔记(day21~)(2016年3月26日01:10:44)

day21 1.编码表概述和常见编码表 计算机只能识别二进制数据,早期由来是电信号. 为了方便应用计算机,让它可以识别各个国家的文字. 就将各个国家的文字用数字来表示,并一一对应,形成一张表. ASCII:美国标准信息交换码. 用一个字节的7位可以表示. ISO8859-1:拉丁码表.欧洲码表 用一个字节的8位表示. GB2312:中国的中文编码表. GBK:中国的中文编码表升级,融合了更多的中文文字符号. GB18030:GBK的取代版本 BIG-5码 :通行于台湾.香港地区的一个繁体字编码方