- 浏览: 52905 次
文章分类
最新评论
1. 线程池可以节省创建多个线程带来的开销问题。
2. 线程池的参数如下:
说明:
线程池按以下行为执行任务
1)当线程数小于核心线程数时,创建线程。
2)当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列。
3)当线程数大于等于核心线程数,且任务队列已满
i)若线程数小于最大线程数,创建线程
ii)若线程数等于最大线程数,抛出异常,拒绝任务
3. 例子
结果说明:
1)如果队列不指定大小,默认大小无限大,这样队列不会满,每次只有三个coreThread来
跑(大于核心线程数,但队列不满,任务放入队列中);
2)如果指定队列大小为10,则最大的10个工作线程来跑;
3)如果指定队列大小为5,则队列满了,后面的线程被reject掉了。
2. 线程池的参数如下:
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, Executors.defaultThreadFactory(), defaultHandler); }
说明:
线程池按以下行为执行任务
1)当线程数小于核心线程数时,创建线程。
2)当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列。
3)当线程数大于等于核心线程数,且任务队列已满
i)若线程数小于最大线程数,创建线程
ii)若线程数等于最大线程数,抛出异常,拒绝任务
3. 例子
public static void main(String args[]) throws InterruptedException { ThreadPoolExecutor executor; executor = new ThreadPoolExecutor(3, 10, 5, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(10)); for(int i=0;i<20;i++){ Runnable r=new Runnable(){ @Override public void run() { System.out.println("thread run..."); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } }; executor.execute(r); } }
结果说明:
1)如果队列不指定大小,默认大小无限大,这样队列不会满,每次只有三个coreThread来
跑(大于核心线程数,但队列不满,任务放入队列中);
2)如果指定队列大小为10,则最大的10个工作线程来跑;
3)如果指定队列大小为5,则队列满了,后面的线程被reject掉了。
发表评论
-
Java IO 读文件的各种方法总结
2016-01-01 15:00 697IO分为字节流和字符流,字符就是简单的字符串存储,从理伦上讲, ... -
动态代理的应用
2015-12-22 17:30 732代理模式作为开发人员 ... -
Java Restful
2015-12-19 14:01 440对于两个系统之间交互信息,有两种常见的方式:webservic ... -
request.getInputStream() 只能读一次的解决方法
2015-12-17 12:17 2377我们知道request.getInputStream()只能读 ... -
java Hessian 版本冲突问题解决方法
2015-12-11 19:44 865今天在实际的项目发现了一个问题就是hessian的版本不兼容的 ... -
Java RSA 加密 解密 签名 验签
2015-12-09 10:01 61471. 加密的作用 1)明文变密文(你不知道密钥是很难解密的) ... -
Java Xstream xml 与bean之间的转换
2015-12-09 08:31 745xml文件如下: <mvc> & ... -
XPATH 解析XML
2015-12-09 08:28 4341. 表达式描述 nodename 选取此节点的所有子节 ... -
Java Dom4j 解析XML
2015-12-09 08:23 365Dom4j和JDom是很相似的,用起来十分方便。 XML文件 ... -
Java JDom 解析xml
2015-12-09 08:22 415JDOM在解析XML在代码量之上比之前的方法(DOM和SAX要 ... -
Java SAX 解析xml
2015-12-08 18:13 419在上一篇中http://gaofulai1988.iteye. ... -
Java XML解析系列
2015-12-08 18:00 752Java解析XML有多种方式,因此需要分为几个不同的系列来讲。 ... -
Java 背包算法计算从数组中找若干个数使其最接近某个数
2015-12-08 17:38 1988背包的算法的动态方式如下: f(i,w) = max{ f(i ... -
C3P0 连接分析
2015-12-01 19:05 891最近在看C3P0的原理,还是将C3P0的源码导入到Ecplis ... -
微信开发的原理
2015-11-30 10:10 1318微信在现在的生活中,扮演着举足轻重的角色,现在怎么东西都在微信 ... -
JAVA Timestamp 与Data的转化以及BigDecimal 保留两位小数
2015-11-27 14:47 17001. BigDecimal 保留两位小数 今天在项目中遇到这 ... -
java try catch finally return 继续
2015-11-27 13:45 402之前在博客中有一篇文章讨论过异常中return值的情况,有兴趣 ... -
Java JDBC executeBatch 批量操作
2015-11-27 08:05 1629对JDBC 的 CRUD操作,我相信对于每个开发人员来讲,是十 ... -
Java WeakHashMap 分析
2015-11-26 08:17 620昨天在我们的系统中看 ... -
加密与解密
2015-11-18 18:12 480我本身不是学密码出身的,但在工作中经常要使用加密与解密的东东, ...
相关推荐
`ThreadPoolExecutor`类提供了丰富的功能,其构造方法参数如下: 1. `corePoolSize`: 核心线程数,表示线程池中始终存在的线程数。当提交的任务数量少于核心线程数时,线程池会直接创建新线程执行任务,即使已有...
本文将详细讲解如何使用Java中的`ThreadPoolExecutor`来抓取论坛帖子列表,结合源码分析和实用工具的应用。 首先,我们要了解线程池的基本原理。线程池是由一组预先创建的线程组成的,这些线程可以复用,而不是每次...
在 Spring Boot 中使用 Java 线程池 ExecutorService 的讲解 Spring Boot 作为一个流行的 Java 框架,提供了许多便捷的功能来帮助开发者快速构建应用程序。其中之一就是使用 Java 线程池 ExecutorService 来管理...
本篇文档主要针对Python初学者,讲解如何使用Python进行网页图片的爬取,包括静态网页和动态网页的爬取方法。 首先,我们来看静态网页爬取。在Python中,静态网页的爬取通常依赖于`requests`库来发送HTTP请求获取...
通过ThreadPoolExecutor,我们可以自定义线程池的核心线程数、最大线程数、线程空闲时间、任务队列等参数,从而优化线程管理。使用submit()方法可以将任务提交到线程池,线程池会根据策略决定何时执行这些任务。 ...
Java线程池的实现主要有`ThreadPoolExecutor`类,它提供了丰富的构造参数来定制线程池的行为: - `corePoolSize`:线程池的基本大小,即当线程池创建后和运行过程中,即使没有任务,也会保持这个数量的线程存活。 -...
说完线程池的核心构造参数的意思,接下来就来画图讲解这些参数在线程池中是如何工作的。 线程池创建的时候,如果不指定拒绝策略就默认是AbortPolicy策略。当然,你也可以自己实现RejectedExecutionHandler接口,...
Java的Executor框架提供ThreadPoolExecutor和ScheduledThreadPoolExecutor等实现,允许自定义线程池参数,如核心线程数、最大线程数、线程存活时间等。 总结来说,Java线程是实现并发编程的基础,理解和熟练掌握...
Java提供的ExecutorService和ThreadPoolExecutor可以创建线程池,有效地管理线程生命周期,避免频繁创建和销毁线程带来的开销。线程池可以设置核心线程数、最大线程数、线程存活时间等参数。 七、线程异常处理 每...
这里,`max_workers`参数设定了线程池的最大线程数,`submit`方法用于提交任务,`as_completed`则用于获取任务完成后的结果。 总的来说,Python线程池通过预先创建一定数量的线程,实现了对线程资源的有效管理和...
- Executor配置:了解Executor的概念,如何自定义线程池,以及如何通过ThreadPoolExecutor进行线程管理。 - 线程池参数调整:如corePoolSize、maximumPoolSize、keepAliveTime等参数对性能的影响。 5. **Web应用...
- **ThreadPoolExecutor**:ExecutorService的实现,可配置核心线程数、最大线程数、线程存活时间等参数。 - **Executors**:静态工厂方法,提供多种线程池的创建,如FixedThreadPool、SingleThreadExecutor等。 ...
6. **多线程**:Java内置对多线程的支持,教材会讲解如何创建和管理线程,线程同步机制(synchronized、wait/notify、Lock接口),以及并发工具类如ExecutorService和ThreadPoolExecutor。 7. **网络编程**:Java...
ThreadPoolExecutor是核心类,可以自定义线程池参数,如核心线程数、最大线程数、线程空闲时间等。 9. Callable和Future:Callable接口类似于Runnable,但可以返回一个结果。Future接口代表Callable任务的未来结果...
此外,Java并发编程也涉及到线程池的使用,ThreadPoolExecutor是Java中最常用的线程池实现,它可以控制线程的数量,防止过多线程导致系统资源耗尽。线程池的配置需要根据系统的实际情况来调整,如核心线程数、最大...
3. 线程池:介绍ExecutorService、ThreadPoolExecutor和Future接口,以及如何合理配置线程池参数。 4. volatile与synchronized的区别:分析这两个关键字在并发编程中的作用和使用场景。 四、Java IO与NIO 1. 流的...
本讲可能详细解析了GC的工作原理,包括不同的GC算法如串行、并行、并发和G1等,以及如何通过调整JVM参数进行性能优化。 2. **第23讲 - 类加载机制**:Java的类加载机制是程序运行的基础,涉及类加载器、双亲委派...
在`www.pudn.com.txt`和`ThreadPool`这两个文件中,可能包含了更多关于如何实现Socket线程池的具体代码示例和讲解。例如,`www.pudn.com.txt`可能是一个文档,详述了线程池的配置参数选择和优化技巧;而`ThreadPool`...
2. **垃圾收集器与内存调优**:讲解不同类型的GC算法(如Serial、Parallel、CMS、G1、ZGC等),以及如何调整内存参数以减少Full GC的发生。 3. **类加载机制**:解释类加载过程(加载、验证、准备、解析、初始化)...
3. 分析构造函数的作用,包括默认构造器和带参数的构造器。 4. 讨论final关键字的用法,如final变量、final方法和final类。 5. 讲解this和super关键字的使用场景。 三、集合框架 1. 比较ArrayList、LinkedList、...