硫华菊花种哪家便宜? 当前位置:首页>硫华菊花种哪家便宜?>正文

硫华菊花种哪家便宜?

发布时间:2019-04-23

原标题:Executors

“我就是想到了这一类的可能,所以才这么做,不过位面传送阵我已经多次检查够了,没有一点问题,所以还是可以放心的,我们突然降临那些主神绝对会吓他们一跳。”。

2017年最新凌霄树苗报价

“你是女孩子,斗不过那个小偷,不然对你的人身安全是有威胁的。选择避而不见,未尝不是一种明智的选择。如果我不是因为有了一些能力,我可能也会跟车里其他人一样,继续懦弱下去,所以你对我的评价是不对的。”王小民带些自嘲的道,因为曾经他的确遇到过这种事,也的确没有胆子站出来。
虽然已经知道了鲁修他们隐藏的地方,但是叶扬他们却也没有办法,因为那个地方他们根本就下不去。

因此不管以后破鲸他们选择如何,和刘皓为敌还是什么,刘皓都不在意,因为他放走破鲸和可里不过是看心情罢了,而且放走的不是两头不择手段的恶狼,而是两只温顺的小猫,根本不需要担心反噬。

【前言】
    在实际工作中,很少会执行new Thread做多线程处理,而是会创建好线程池,再调用线程池资源。
    就像连接数据库,从来不会说,用JDBC建立连接,而是用数据库连接池,Netty通信也是建个Channel通道池。
    单独建个JDBC要加载驱动,写URL 数据库配置信息,还得关闭连接,每次都得来一遍很麻烦。new Thread也是一样,每次new Thread都要新建个对象,而且线程也缺乏统一的管理,总不可能每次都给线程命名,如果不小心在循环中new了,还可能出现,不停建新线程直至死机,一些高级的功能,更多执行、定期执行、线程中断也没有。
    而线程池就不一样了,前提建好线程,可以重复使用,设置好最大并发数,也不会出现无限制新建线程的情况,定时执行、定期执行、并发数控制这些高级功能也都有。
【正文】

    线程池--ThreadPoolExecutor
    public void ThreadPoolExecutor(int corePoolSize, 
               int maximumPoolSize, 
               long keepAliveTime,
               TimeUnit unit, 
               BlockingQueue workQueue,
               ThreadFactory threadFactory, 
               RejectedExecutionHandler handler) {}

    参数:
    corePoolSize    核心线程数量
    maximumPoolSize    最大线程数量    
    keepAliveTime      空闲线程存活时间
    unit    存活时间的单位
    workQueue    阻塞队列,存储等待执行的任务,很重要,对线程池运行影响很大
    threadFactory    线程工厂,创建管理线程
    handler    拒绝处理任务时的策略

    如果存活线程数<核心线程数,直接创建新线程,一般发生在线程池初始化时(维持一定数量备调用);
    如果存活线程数,处于核心和最大之间,阻塞队列没满,先放队列里,只有阻塞队列满,才创建新线程;
    如果存活线程数,超过最大线程数,且阻塞队列满,执行拒绝策略
    好理解的:南京市民大厅,至少开5个窗口(核心线程),市民(任务)超过5个,大厅长椅(阻塞队列)坐得下,就不开新窗口(线程),大厅里坐不下,还有空余窗口(最大线程),就多开窗口,要是窗口全开了,大厅还坐不下,就通知暂停发号(拒绝策略)。

    方法:
    execute() :提交任务交给线程池处理
    submite() :提交任务,能够返回结果execute+Future
    shutdown() :关闭任务,等待任务都执行完。
    shutdownNow() :关闭任务,不等待任务执行完。
    常用的只有第1种。

    getTaskCount() :已执行和未执行的任务数
    getCompletedTaskCount() :已完成任务数
    getPoolSize() :当前线程数
    getActiveCount() :活跃线程数

    Executor框架接口:
    Executors.newCachedThreadPool 可缓存的线程池,灵活回收创建线程
    Executors.newFixedThreadPool    定长的线程池,控制并发数,超出的线程会在队列等待
    Executors.newScheduleThreadPool     定长的线程池,定时周期执行
    Executors.newSingleThreadPool     单线程池

【线程池配置和使用场景】
    并不是说,随便一个场景都可以使用线程池,如果数据很少(10w)并发很少(100QPS)。这时候花费在线程调度和管理的时间,要比单线程计算的时间还要长,这时候就不要起线程池了。
    一般CPU密集型(计算)的处理任务,线程数可以预设CPU数+1,IO密集型(存储读取)任务,预设2*CPU数,具体调整可以看消耗内存情况。
public class ThreadPool
{
    public static void main(String[] args) {
                //CachedThreadPool结果是乱序的
        ExecutorService executorService=Executors.newCachedThreadPool();
                //FixedThreadPool需要制定coreThread数
                //ExecutorService executorService=Executors.newFixedThreadPool(3);
                //SingleThreadExecutor有序
                //ExecutorService executorService=Executors.newSingleThreadExecutor();
        for (int i = 0; i < 10; i++) {
            final int index = i;
            executorService.execute(new Runnable() {
                public void run() {
                    System.out.println("task:"+index);
                }
            });
        }
        executorService.shutdown();
    }
}

CachedThreadPool结果是乱序的

public class ScheduledThreadPool
{
    public static void main(String[] args) {
                //延迟1秒后,每隔3秒输出当前时间,实现线程调度
        ScheduledExecutorService executorService=Executors.newScheduledThreadPool(3); 
        final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
        executorService.scheduleAtFixedRate(new Runnable() {            
            public void run() {
                System.out.println(df.format(new Date()));
            }
        }, 1, 3, TimeUnit.SECONDS);
    }
}

延迟1秒后,每隔3秒输出当前时间,实现线程调度

编辑:开成扁

发布:2019-04-23 05:50:35

当前文章:http://www.nsmsa.com.cn/ghrm5.html

广西榆叶梅价格便宜吗? 内蒙扶芳藤基地多吗? 哪里有碧桃树出售,最常用的规格多少钱一棵能买到 【行情快报】最新红叶碧桃价格,来自中国最大观赏桃产区报价表 【行情快讯】最新一季玫瑰木槿价格表,来自全国最大木槿生产基地 常用品种蔷薇花的价格其实很便宜,买蔷薇花苗当然到原产地 河南什么地方批发月季苗? 蒙娜丽莎月季是藤本吗?

88266 17810 48650 48374 30110 23679 95309 84142 45122 26824 25409 71015 61988 45340 54502 41546 95449 77402 89726 83704

责任编辑:侯公