• 西安市:构建“五方联动”社会治理新格局 2019-06-23
  • IP定向--云南频道--人民网 2019-06-23
  • 育儿十大坎 新手妈妈快快get起来 2019-06-21
  • 吉林:让更多农村孩子参加少年宫活动 2019-06-21
  • 美国发起贸易战,我们要让世界知道美元、美债并不可靠 2019-06-05
  • 紫光阁中共中央国家机关工作委员会 2019-05-31
  • 监察体制改革后 湘西半年72名公职人员主动交代问题 2019-05-12
  • 媒体宣传报道重庆日报 王国平:扮靓重庆两江四岸” 让城市有机更新 2019-04-26
  • 我相信“交警雨中护送高考生”是真,“交警雨中护送高考生”反被该高考生家长投诉是假。 2019-04-16
  • 14名消防员日巡逻28公里 洗冷水澡 2019-04-10
  • 靶壕有了“蓝军”,百发百中的“神枪手”练起来 2019-04-10
  • 不是秀强大了,别人就会来做朋友,这逻辑不对 2019-04-01
  • 候选企业:中国石油呼和浩特石化公司 2019-03-26
  • 航天员沙漠野外生存训练完美收官!为第一天团打call 2019-03-25
  • 请问,建立市场经济后,原计划经济哪里去?改革后,我们还在实行计划经济,为何没有提及? 2019-03-25
  • 频道栏目
    神奇公式秒杀全国11选5 > 程序开发 > 软件开发 > Java > 正文
    Java架构学习之线程池使用讲解
    2018-07-27 13:52:19         来源:Leeue李月  
    收藏   我要投稿

    一、线程池

     神奇公式秒杀全国11选5 www.2zfa.com 
    1、什么是线程池?
    答:
        经常创建、启动销毁一个线程都是非常消耗时间的。
        使用线程池进行管理和复用线程,提高程序效率。
    
    面试答:
    Java线程池能带来的3个好处:
     1、降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
     2、提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。
     3、提高线程的可管理性。线程是稀缺资源,如果无限制地创建,
     不仅会消耗系统资源?;够峤档拖低车奈榷ㄐ?。
     使用线程池可以统一分配、调优和监控,但是要合理利用。
    
    Java使用线程核心走的是ThreadPoolExecutor。(构造函数)
    

    二、使用线程池的方式

    使用线程池的方式:
    使用Executor 封装好的四种线程池类型。
    1、newCachodThreadPool创建一个可以缓存线程池,如果线程池长度超过处理需要
    ,可灵活回收空闲线程,若无可回收,则新建线程。
    2、newFixedThreadPool 创建一个定长的线程池??煽刂葡叱套畲蟛⒎⑹?,超出的
    线程会在队列中等待。
    3、newFixedThreadPool 创建一个定长的线程池。
    4、newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作
    线程来执行任务。
    

    三、线程池合理配置

    CPU密集、IO密集。
    

    四、4种创建线程池的方式

    newCachedThreadPool 创建可以缓存的线程池

    代码:

    package com.leeue;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    /**
     * @classDesc: 功能描述:(线程池四种创建方式 newCachedThreadPool 创建可缓存的线程池)
     * @author:
     * @Version:v1.0
     * @createTime:2018年7月24日 下午2:56:16
     */
    public class NewCachedThreadPoolDemo {
        public static void main(String[] args) {
            // 1、创建可缓存的线程池 可以重复的利用
            ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
            for (int i = 0; i < 10; i++) {
                int temp = i;
                newCachedThreadPool.execute(new Runnable() {
                    @Override
                    public void run() {
                        System.out.println("ThreadName:" + Thread.currentThread().getName() + " i:" + temp);
                    }
                });
            }
        }
    }
    显示结果:本来程序是创建10个线程,这里就创建了7个,说明有3个在复用
    

    这里写图片描述

    newFixedThreadPool:创建固定长度的线程池

    代码:
    
    package com.leeue;
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    /**
     * 
     * @classDesc: 功能描述:(可固定长度的线程池  newFixedThreadPool)
     * @author:李月
     * @Version:v1.0
     * @createTime:2018年7月24日 下午3:23:49
     */
    public class newFixedThreadPoolDemo {
        public static void main(String[] args) {
            //快捷键 ctrl+2 +F 来创建变量名
            ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(3);
            for(int i = 0; i < 10; i++) {
                int temp = i;
                newFixedThreadPool.execute(new Runnable() {
    
                    @Override
                    public void run() {
                    System.out.println("ThreadName:"+Thread.currentThread().getName()+" i:"+temp);  
                    }
                });
            }
    
        }
    }
    显示效果:
    

    这里写图片描述

    newScheduledThreadPool:创建可以定时执行的线程池

    代码执行:
    
    package com.leeue;
    
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.TimeUnit;
    
    /**
     * 
     * @classDesc: 功能描述:(创建 可定时的线程池)
     * @author:
     * @Version:v1.0
     * @createTime:2018年7月24日 下午3:40:54
     */
    public class NewScheduledThreadPoolDemo {
        public static void main(String[] args) {
            ScheduledExecutorService newScheduledThreadPool = Executors.newScheduledThreadPool(3);
            for(int i = 0; i < 10; i++) {
                int temp = i;
                newScheduledThreadPool.schedule(new Runnable() {
    
                    @Override
                    public void run() {
                        System.out.println("ThreadName:"+Thread.currentThread().getName()+" i:"+temp);  
    
                    }
                }, 3, TimeUnit.SECONDS);//定时3秒后 执行这个线程池
            }
        }
    }
    
    显示效果:
    

    这里写图片描述

    newSingleThreadExecutor:单线程池

    代码:
    
    package com.leeue;
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    /**
     * 
     * @classDesc: 功能描述:(单线程的线程池)
     * @author:
     * @Version:v1.0
     * @createTime:2018年7月24日 下午3:57:15
     */
    public class NewSingleThreadScheduledDemo {
        public static void main(String[] args) {
            ExecutorService newSingleThreadExecutor = Executors.newSingleThreadExecutor();
            for (int i = 0; i < 10; i++) {
                int temp = i;
                newSingleThreadExecutor.execute(new Runnable() {
    
                    @Override
                    public void run() {
                        System.out.println("ThreadName:" + Thread.currentThread().getName() + " i:" + temp);
                    }
                });
            }
        }
    }
    
    显示效果
    

    这里写图片描述

    停掉线程池的方法newSingleThreadExecutor.shutdown();//停掉线程池的方法

    调用shoutdown()方法。
    

    五、线程池原理分析

    面试的时候主要谈:核心线程池、最大线程数。
    
    点击复制链接 与好友分享!回本站首页
    上一篇:java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotatedElementUtils.findMergedAnn报错解决办法
    下一篇:Java架构学习之jason、fastjson解析、xml使用、dom4j解析、java反射机制及手写SpringIOC框架实例讲解
    相关文章
    图文推荐
    点击排行

    关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 神奇公式秒杀全国11选5

    版权所有: 神奇公式秒杀全国11选5--致力于做实用的IT技术学习网站

  • 西安市:构建“五方联动”社会治理新格局 2019-06-23
  • IP定向--云南频道--人民网 2019-06-23
  • 育儿十大坎 新手妈妈快快get起来 2019-06-21
  • 吉林:让更多农村孩子参加少年宫活动 2019-06-21
  • 美国发起贸易战,我们要让世界知道美元、美债并不可靠 2019-06-05
  • 紫光阁中共中央国家机关工作委员会 2019-05-31
  • 监察体制改革后 湘西半年72名公职人员主动交代问题 2019-05-12
  • 媒体宣传报道重庆日报 王国平:扮靓重庆两江四岸” 让城市有机更新 2019-04-26
  • 我相信“交警雨中护送高考生”是真,“交警雨中护送高考生”反被该高考生家长投诉是假。 2019-04-16
  • 14名消防员日巡逻28公里 洗冷水澡 2019-04-10
  • 靶壕有了“蓝军”,百发百中的“神枪手”练起来 2019-04-10
  • 不是秀强大了,别人就会来做朋友,这逻辑不对 2019-04-01
  • 候选企业:中国石油呼和浩特石化公司 2019-03-26
  • 航天员沙漠野外生存训练完美收官!为第一天团打call 2019-03-25
  • 请问,建立市场经济后,原计划经济哪里去?改革后,我们还在实行计划经济,为何没有提及? 2019-03-25
  • 基诺彩票公式 内蒙古十一选五1 新疆11选五现场开奖结果查询 香港开奖一码一肖中特 甘肃十一选五开奖时间 河南快赢481推荐 双色球最大奖历史记录 2019公式规律 一码中特诗 蓝球开奖结果百度 极速十一选五在线预测 澳客网江西时时彩 3d定胆彩票软件破解版 qq斗地主游戏全民刮刮乐 福建快3走势图今天