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
- 10 Java并发编程5-线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- Java并发编程:线程池的使用
- iOS cocoapods依赖私有库
- JavaScript入门——比较与逻辑运算符
- Apache Kafka笔记(二):Topics,Partitions and Brokers
- 248精炼版游戏源码打包下载可直接在手机上运行
- 意外de审核
- 10 Java并发编程5-线程池的使用
- npm ERR!无法安装任何包的解决办法
- 输入输出系统--I/O接口
- 李开复:算法的力量
- 简单的git使用方法
- 摸黑路:Access denied for user 'root'@'localhost' (using password: YES)
- WebService-服务端与客户端
- javascript学习指南--话说javascript对象
- 元素等待(显式...)