10 Java并发编程5-线程池的使用

来源:互联网 发布:js设置placeholder 编辑:程序博客网 时间:2024/06/06 23:26

http://www.cnblogs.com/dolphin0520/p/3932921.html

一 Java中的ThreadPoolExecutor类
java.util.concurrent.ThreadPoolExecutor类线程池中最核心的一个类。
1)Executor是一个顶层接口,只有一个void execute(Runnable)方法,执行传进去的任务。
2)ExecutorService接口继承了Executor接口,并声明了一些方法:submit\invokeAll\invokeAny\shutDown。
3)抽象类AbstractExecutorService实现了ExecutorService接口。
4)ThreadPoolExecutor继承了类AbstractExecutorService。
ThreadPoolExecutor类中几个重要的方法:
1)execute() : 向线程池提交一个任务,交由线程池去执行。
这里写图片描述
2)submit():向线程池提交任务,能返回Future,底层调用execute()。
这里写图片描述
3)shutdown():关闭线程池
4)shutdownNow()

二 深入剖析线程池实现原理

三 使用示例

package javaconfig;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;public class ExecutorTest {    public static void main(String[] args) {        ExecutorService pool = Executors.newCachedThreadPool();        pool.execute(new Runnable() {            @Override            public void run() {                // TODO Auto-generated method stub                System.out.println("execute执行");            }        });        Future<Integer> submit = pool.submit(new Callable<Integer>() {            @Override            public Integer call() throws Exception {                // TODO Auto-generated method stub                return 1;            }        });        try {            Integer integer = submit.get();            System.out.println("submit执行:" + integer);        } catch (InterruptedException | ExecutionException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        pool.shutdown();    }}

不提倡直接使用ThreadPoolExecutor,而是使用Executors类中提供的几个静态方法来创建线程池。

四 如何合理配置线程池的大小
如果是CPU密集型任务,就需要尽量压榨CPU,参考值可以设为 NCPU+1
如果是IO密集型任务,参考值可以设置为2*NCPU

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新生儿血钙1.7怎么办啊 3个月宝宝胃口小怎么办 3个月宝宝缺钙怎么办 五个月宝宝吃手睡觉怎么办 2个月宝宝有蛲虫怎么办 四个月婴儿漏屎怎么办 母乳喂养6个月才11斤怎么办 过期的果泥肉泥怎么办? 孩子被开水烫了怎么办 小儿喝开水烫了怎么办 小孩不识字怎么办17-18 3岁宝宝不识数字怎么办 小孩数字写反了怎么办 3岁宝宝乱啃东西怎么办 闹钟的指针松了怎么办 手机想让它横屏怎么办 教孩子写作业头都被气炸了怎么办 2岁宝宝大小脸怎么办 宝宝2岁半不认识颜色怎么办 宝宝11个多月突然排斥妈妈怎么办 5个月婴儿粘妈妈怎么办 3岁宝宝记不住颜色怎么办 3岁宝宝不认字怎么办 墙纸被宝宝弄上各种颜色怎么办 三周半的孩子不认识数字怎么办 3岁幼儿不会数数怎么办 四岁宝宝不认识数字怎么办 三岁宝宝不认识数字怎么办 4岁半了不认识数字怎么办 5岁小朋友数字不认识怎么办 孩子读一年级字都不识几个怎么办 宝宝二周多了不分颜色怎么办 4岁儿童手指脱皮怎么办 孩子老是不会写2怎么办 宝宝胃浅容易吐怎么办 农村户口小孩去城里读书怎么办 小孩从城市回农村读书怎么办 天冷了怎么办教案反思 小孩上幼儿园不爱学习怎么办 曰光灯管监控要反光怎么办 立邦乳胶漆墙面脏了怎么办