- 浏览: 43351 次
- 性别:
- 来自: 南京
文章分类
最新评论
应用线程池
一、任务与执行策略之间的隐性耦合。
1、有些类型的任务需要明确一个执行的策略,包括:
1)依赖的任务
2)使用线程限制的任务
3)对响应时间敏感的任务
4)使用ThreadLocal的任务
2、线程饥饿死锁(Thread starvation dead)
如果线程中一个任务依赖于其他任务的执行,就可能产生死锁。
3、耗时操作
解决方法:设置阻塞操作的超时时间,如Thread.join, BlockingQueue.put, CountDownLatch.await, Selector.select
二、设置线程池的大小
1、避免线程池的长度硬编码,需要考虑计算环境,资源预算和任务的自身特性
2、公式及定义
三、配置ThreadPoolExecutor
1、ThreadPoolExecutor为Executor提供基本的实现,可以通过它构造自己的Executor。
2、线程的创建与销毁,ThreadPoolExecutor的构造函数的几个参数:corePoolSize,maximumPoolSize,keepAliveTime
3、管理队列任务
ThreadPoolExecutor允许提供一个BlockingQueue来持有等待执行的任务。
任务排队的方式有三种: 无限队列,有限队列,同步移交
如何避免资源耗尽。
4、饱和策略
1)通过setRejectedExecutionHandler来修改ThreadPoolExecutor的饱和策略。
2)JDK提供了几种不同的RejectedExecutionHandler的实现,实现了不同的策略AbortPolicy,CallerRunsPolicy,DiscardPolicy,DiscardOldestPolicy
AbortPolicy :引起execute抛出未检查的RejectedExecutionException,调用者可以捕获这个异常,进行处理
DiscardPolicy:当新提交的任务不能进入队列等待执行的时候,discard会默认放弃这个任务。
DiscardOldestPolicy:策略选择丢弃的任务,放弃即将执行的任务,重新提交新任务。
CallerRunsPolicy:既不抛异常,也不抛弃任务。它把一些任务退回给调用者,以减缓任务流。
3)使用semaphore来抑制任务提交。
4)线程工厂ThreadFactory,接口只有一个方法newFactory
5、扩展ThreadPoolExecutor
1)提供几个函数让子类去重写 beforeExecute(),afterExecute(),terminate()
无论任务是从run()中返回,还是抛出异常,afterExecute都会被执行;
如果beforeExecute抛出一个runtimeException,任务将不被执行,afterExecute也不会被调用。
terminate 在线程池完成关闭后调用。
6、并行递归算法
1)顺序执行改为并行执行。
2)谜题框架
发表评论
-
CORBA笔记
2012-12-06 10:29 1129一、原理和概念1)CORBA独立于任何编程语言,独立于操作系统 ... -
RMI笔记
2012-12-05 15:49 997RMI(remote method invoke) ... -
概要设计
2012-11-27 16:42 0概要设计1、引言2、术语、缩略语定义3、设计依据4、概述5、设 ... -
详细设计
2012-11-27 16:41 0详细设计1、引言1.1编写目的1.2文档约定2、术语、缩略语定 ... -
Java性能调优笔记
2012-11-27 15:46 684Java性能调优笔记(http:/ ... -
重读I/O
2012-11-15 17:07 863inputStream的类型1、字节数组 byteArray2 ... -
buffer
2012-11-15 17:00 0Buffer一、Basic Buffer Use四个步骤:1、 ... -
今日笔记
2012-11-14 16:26 0JAVA NIO客户端通信总结1 ... -
取消和关闭
2012-11-13 12:50 844中断一个协作机制,使 ... -
SOAP
2012-11-13 12:48 940webService复习一、soap:simple Objec ... -
JVM option
2012-11-06 15:39 573@echo off set jvm_opts=-Xms256 ... -
Use Queue as a Stack
2012-10-18 19:10 710package com.zhoubo.concurrent.c ... -
QueueDemo
2012-10-18 19:08 944package com.zhoubo.concurrent.c ... -
comparatable and comparator
2012-10-18 19:06 833package com.zhoubo.concurrent.c ... -
再读think in java
2012-10-10 17:36 0hashcode()要基于对象的内容来生成散列码,散列码不必唯 ... -
Thread 学习小结
2012-10-09 17:36 7561.ThreadFactory 创建线程 ... -
CyclicBarrier理解
2012-08-29 17:13 927package com.zhoubo.concurrent.b ... -
FutureTask实例
2012-08-24 16:08 884package com.zhoubo.concurrent.f ... -
CountDownLatch示例
2012-08-24 11:31 720import java.util.concurrent.Cou ... -
Task Cancellation
2012-08-15 17:35 07.1. Task Cancellation An activ ...
相关推荐
AppExecutor 应用线程池,可以指定任务的优先级,以及任务执行顺序
所谓线程池,即在进程启动时,同时生成一定数量的线程,把他们放入一个容器中,这样,当有需求时,从池中取出一个线程去处理请求,当池里的线程用完时,在有请求时则只能等待。
同时,我们将提供完整的源代码和注释,帮助您更好地理解和应用线程池。 Spring Boot中的线程池为开发者提供了强大的并发支持。通过合理配置和使用线程池,我们可以优化系统性能,提高应用的响应速度和吞吐量。深入...
JAVA服务器端应用Socket线程池,代码简练实用,仅作技术交流,勿用于商业用途.
Python 应用之线程池.pdf
线程池技术研究与应用
线程池介绍,介绍应用中如何使用线程池,开启线程池。
Python 应用之线程池
ThreadPool 线程池类 DEFAULT_POOL_SIZE 默认线程池大小 threadPool 线程队列 taskQueue 任务队列 poolSize 自定义线程池大小 通过构造启动该线程池,调用addTask 方法将task任务传入,线程池会自动分配线程去执行...
c# 线程池的高级应用,值不值的一看,就看你了,vs2005代码齐全下载即可运行。
此文档是: 基于简单线程池概念的JAVA服务器端应用 附有连接ORACLE数据库等简单操作. 操作描述: 服务器启动后,会启动10个子线程运行.(配合客户端10个请求进行模拟,控制台输出模拟过程) 服务器主程序进入一个有...
Java分布式应用学习笔记07线程池应用
以下示例显示如何使用线程池。首先创建 ManualResetEvent 对象,此对象使程序能够知道线程池何时运行完所有的工作项。接着,尝试向线程池添加一个线程。如果添加成功,则添加其余的线程(本例中为 4 个)。然后...
C线程池简单应用层实现,双向循环链表实现,带参宏链表应用,管道传地址参数实现,地址二级指针赋值。可以用于单线程池实现参考价值。
Java线程池应用
六、线程池应用场景与实践 6.1 服务器应用 6.2 数据处理与计算密集型任务 6.3 图形界面与事件驱动程序 七、C++线程池高级应用与实际案例 7.1 基于负载均衡的任务分配策略 7.2 线程池性能优化技巧 八、实际案例分析与...
线程池技术在网络游戏服务器中的应用
这是一篇关于c#线程池应用的详细描述 与大家分享一下
为了防止资源不足,服务器应用程序需要采取一些办法来限制任何给定时刻处理的请求数目,尽可能减少创建和销毁线程的次数,特别是一些资源耗费比较大的线程的创建和销毁,尽量利用已有对象来进行服务,这就是“池化...