- 浏览: 697815 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
线程池使用
1.1 线程池配置
可以在任意的aop xml配置文件中配置线程池,只需将相关的xml配置文件直接或者间接导入manager-provider.xml文件既可,这里以一个thread.xml文件为列来说明线程池的配置:
<?xml version="1.0" encoding='gb2312'?>
<manager-config>
<properties>
<property name="test.threadpool">
<map>
<property name="corePoolSize" value="5" />
<property name="maximumPoolSize" value="10" />
<!--
TimeUnit.SECONDS TimeUnit.MICROSECONDS TimeUnit.MILLISECONDS
TimeUnit.NANOSECONDS 时间单位适用于以下参数: keepAliveTime waitTime
delayTime(当delayTime为整数时间而不是百分比时有效)
-->
<property name="timeUnit" value="TimeUnit.SECONDS" />
<property name="keepAliveTime" value="40" />
<!--
/** * LinkedBlockingQueue * PriorityBlockingQueue *
ArrayBlockingQueue * SynchronousQueue */
-->
<property name="blockingQueueType" value="ArrayBlockingQueue" />
<property name="blockingQueue" value="10" />
<!--
RejectedExecutionHandler
必须实现java.util.concurrent.RejectedExecutionHandler接口 目前系统提供以下缺省实现:
org.frameworkset.thread.WaitPolicy
循环等待event.threadpool.waitTime指定的时间,单位为秒
java.util.concurrent.ThreadPoolExecutor.DiscardPolicy 直接丢弃任务,不抛出异常
java.util.concurrent.ThreadPoolExecutor.AbortPolicy
直接丢弃任务,抛出异常RejectedExecutionException
java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy 直接运行
java.util.concurrent.ThreadPoolExecutor.DiscardOldestPolicy
放入队列,将最老的任务删除
-->
<property name="rejectedExecutionHandler" value="org.frameworkset.thread.WaitPolicy" />
<!--
以下参数只有在配置的org.frameworkset.thread.WaitPolicy策略时才需要配置
-->
<property name="waitTime" value="1" />
<property name="delayTime" value="10%" />
<property name="maxWaits" value="2" />
<property name="waitFailHandler"
value="org.frameworkset.thread.TestThread$WaitFailHandlerTest" />
</map>
</property>
</properties>
</manager-config>
将thread.xml文件存储在classes目录下,在manager-provider.xml文件中导入既可:
<managerimport file="thread.xml" />
可以配置多个线程池,只要<property name="test.threadpool">指定不同的name(线程池的名称)即可。
1.2 获取线程池实例
获取线程池实例的方法如下:
ThreadPoolExecutor
executer =
ThreadPoolManagerFactory.getThreadPoolExecutor("test.threadpool");
获取名称test.threadpool时不会每次都创建线程池的实例,只有第一次获取时才会创建实例,因此是单实例的。如果在获取test.threadpool的线程池是,对应的配置文件中并没有配置test.threadpool那么将采用默认的线程池参数来创建线程池实例。
默认的配置信息如下:
Pro pro = new Pro();
pro.setName("corePoolSize");pro.setValue("5");
defaultPoolparams.put("corePoolSize", pro);
pro = new Pro();
pro.setName("maximumPoolSize");pro.setValue("10");
defaultPoolparams.put("maximumPoolSize", pro);
pro = new Pro();
pro.setName("keepAliveTime");pro.setValue("30");
defaultPoolparams.put("keepAliveTime", pro);
pro = new Pro();
pro.setName("timeUnit");pro.setValue("TimeUnit.SECONDS");
defaultPoolparams.put("timeUnit", pro);
pro = new Pro();
pro.setName("blockingQueue");pro.setValue("10");
defaultPoolparams.put("blockingQueue", pro);
/**
* DelayQueue LinkedBlockingQueue PriorityBlockingQueue
* ArrayBlockingQueue SynchronousQueue
*/
pro = new Pro();
pro.setName("blockingQueueType");pro.setValue("ArrayBlockingQueue");
defaultPoolparams.put("blockingQueueType", pro);
pro = new Pro();
pro.setName("rejectedExecutionHandler");pro.setValue("org.frameworkset.thread.RejectRequeuePoliecy");
defaultPoolparams.put("rejectedExecutionHandler", pro);
pro = new Pro();
pro.setName("waitTime");pro.setValue("1");
defaultPoolparams.put("waitTime", pro);
pro = new Pro();
pro.setName("delayTime");pro.setValue("20%");
defaultPoolparams.put("delayTime", pro);
pro = new Pro();
pro.setName("maxWaits");pro.setValue("-1");
defaultPoolparams.put("maxWaits", pro);
pro = new Pro();
pro.setName("maxdelayTime");pro.setValue("4");
defaultPoolparams.put("maxdelayTime", pro);
1.3 使用线程池来执行任务
1.3.1 定义一个任务
public static class Run implements Runnable
{
public void run()
{
if (true)
{
i ++;
System.out.println("run:"+ i);
try
{
synchronized(this)
{
this.wait(4000);
}
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
1.3.2 利用线程池来执行任务
一般的使用方法:
ThreadPoolExecutor executer = ThreadPoolManagerFactory.getThreadPoolExecutor("test.threadpool");
for(int i = 0; i < 50 ; i ++)
executer.execute(new Run());
如果线程池趋于繁忙时,外部可以通过执行 InnerThreadPoolExecutor类的以下方法来缓解系统的压力(采用等待阻塞延时方法):
public boolean busy(RejectCallback rejectcallback, BaseLogger log)
例如:
InnerThreadPoolExecutor executer = (InnerThreadPoolExecutor)ThreadPoolManagerFactory.getThreadPoolExecutor("test.threadpool");
for(int i = 0; i < 50 ; i ++)
{
executor.busy(rejectcallback, baselog);
executer.execute(new Run());
}
rejectcallback为org.frameworkset.thread. RejectCallback的子类,
baselog为org.frameworkset.log.BaseLog的类实例。
1.3.3 线程池的关闭
所有的线程池在jvm关闭时自动关闭。
1.1 线程池配置
可以在任意的aop xml配置文件中配置线程池,只需将相关的xml配置文件直接或者间接导入manager-provider.xml文件既可,这里以一个thread.xml文件为列来说明线程池的配置:
<?xml version="1.0" encoding='gb2312'?>
<manager-config>
<properties>
<property name="test.threadpool">
<map>
<property name="corePoolSize" value="5" />
<property name="maximumPoolSize" value="10" />
<!--
TimeUnit.SECONDS TimeUnit.MICROSECONDS TimeUnit.MILLISECONDS
TimeUnit.NANOSECONDS 时间单位适用于以下参数: keepAliveTime waitTime
delayTime(当delayTime为整数时间而不是百分比时有效)
-->
<property name="timeUnit" value="TimeUnit.SECONDS" />
<property name="keepAliveTime" value="40" />
<!--
/** * LinkedBlockingQueue * PriorityBlockingQueue *
ArrayBlockingQueue * SynchronousQueue */
-->
<property name="blockingQueueType" value="ArrayBlockingQueue" />
<property name="blockingQueue" value="10" />
<!--
RejectedExecutionHandler
必须实现java.util.concurrent.RejectedExecutionHandler接口 目前系统提供以下缺省实现:
org.frameworkset.thread.WaitPolicy
循环等待event.threadpool.waitTime指定的时间,单位为秒
java.util.concurrent.ThreadPoolExecutor.DiscardPolicy 直接丢弃任务,不抛出异常
java.util.concurrent.ThreadPoolExecutor.AbortPolicy
直接丢弃任务,抛出异常RejectedExecutionException
java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy 直接运行
java.util.concurrent.ThreadPoolExecutor.DiscardOldestPolicy
放入队列,将最老的任务删除
-->
<property name="rejectedExecutionHandler" value="org.frameworkset.thread.WaitPolicy" />
<!--
以下参数只有在配置的org.frameworkset.thread.WaitPolicy策略时才需要配置
-->
<property name="waitTime" value="1" />
<property name="delayTime" value="10%" />
<property name="maxWaits" value="2" />
<property name="waitFailHandler"
value="org.frameworkset.thread.TestThread$WaitFailHandlerTest" />
</map>
</property>
</properties>
</manager-config>
将thread.xml文件存储在classes目录下,在manager-provider.xml文件中导入既可:
<managerimport file="thread.xml" />
可以配置多个线程池,只要<property name="test.threadpool">指定不同的name(线程池的名称)即可。
1.2 获取线程池实例
获取线程池实例的方法如下:
ThreadPoolExecutor
executer =
ThreadPoolManagerFactory.getThreadPoolExecutor("test.threadpool");
获取名称test.threadpool时不会每次都创建线程池的实例,只有第一次获取时才会创建实例,因此是单实例的。如果在获取test.threadpool的线程池是,对应的配置文件中并没有配置test.threadpool那么将采用默认的线程池参数来创建线程池实例。
默认的配置信息如下:
Pro pro = new Pro();
pro.setName("corePoolSize");pro.setValue("5");
defaultPoolparams.put("corePoolSize", pro);
pro = new Pro();
pro.setName("maximumPoolSize");pro.setValue("10");
defaultPoolparams.put("maximumPoolSize", pro);
pro = new Pro();
pro.setName("keepAliveTime");pro.setValue("30");
defaultPoolparams.put("keepAliveTime", pro);
pro = new Pro();
pro.setName("timeUnit");pro.setValue("TimeUnit.SECONDS");
defaultPoolparams.put("timeUnit", pro);
pro = new Pro();
pro.setName("blockingQueue");pro.setValue("10");
defaultPoolparams.put("blockingQueue", pro);
/**
* DelayQueue LinkedBlockingQueue PriorityBlockingQueue
* ArrayBlockingQueue SynchronousQueue
*/
pro = new Pro();
pro.setName("blockingQueueType");pro.setValue("ArrayBlockingQueue");
defaultPoolparams.put("blockingQueueType", pro);
pro = new Pro();
pro.setName("rejectedExecutionHandler");pro.setValue("org.frameworkset.thread.RejectRequeuePoliecy");
defaultPoolparams.put("rejectedExecutionHandler", pro);
pro = new Pro();
pro.setName("waitTime");pro.setValue("1");
defaultPoolparams.put("waitTime", pro);
pro = new Pro();
pro.setName("delayTime");pro.setValue("20%");
defaultPoolparams.put("delayTime", pro);
pro = new Pro();
pro.setName("maxWaits");pro.setValue("-1");
defaultPoolparams.put("maxWaits", pro);
pro = new Pro();
pro.setName("maxdelayTime");pro.setValue("4");
defaultPoolparams.put("maxdelayTime", pro);
1.3 使用线程池来执行任务
1.3.1 定义一个任务
public static class Run implements Runnable
{
public void run()
{
if (true)
{
i ++;
System.out.println("run:"+ i);
try
{
synchronized(this)
{
this.wait(4000);
}
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
1.3.2 利用线程池来执行任务
一般的使用方法:
ThreadPoolExecutor executer = ThreadPoolManagerFactory.getThreadPoolExecutor("test.threadpool");
for(int i = 0; i < 50 ; i ++)
executer.execute(new Run());
如果线程池趋于繁忙时,外部可以通过执行 InnerThreadPoolExecutor类的以下方法来缓解系统的压力(采用等待阻塞延时方法):
public boolean busy(RejectCallback rejectcallback, BaseLogger log)
例如:
InnerThreadPoolExecutor executer = (InnerThreadPoolExecutor)ThreadPoolManagerFactory.getThreadPoolExecutor("test.threadpool");
for(int i = 0; i < 50 ; i ++)
{
executor.busy(rejectcallback, baselog);
executer.execute(new Run());
}
rejectcallback为org.frameworkset.thread. RejectCallback的子类,
baselog为org.frameworkset.log.BaseLog的类实例。
1.3.3 线程池的关闭
所有的线程池在jvm关闭时自动关闭。
发表评论
-
bboss离线开发文档下载
2013-05-14 18:08 1871bboss离线开发文档下载 为了便于bboss开发人员离线查找 ... -
bboss 3.6发布,丰富的功能扩展和改进
2012-10-07 09:50 2046bboss 3.6 (官网下载,sf下载)发布了,新版本相比之 ... -
Bboss国际化实践PPT
2012-06-10 12:52 1395Bboss国际化实践PPT,点击链接即可下载: Bboss国际 ... -
bboss国际化功能简介
2012-05-09 08:59 1266借助bboss国际化功能,我们可以非常方便快捷地实现系统 ... -
bboss 4.10.7及更低版本ant构建方法
2012-03-23 22:54 6040本文适用bboss 4.10.7及更低版本,4.10.8及后续 ... -
bboss 将内容为GBK编码文件转UTF-8工具介绍
2012-03-23 15:53 1698bboss 将内容为GBK编码文件转UTF-8工具介绍 bb ... -
bbossgroups 3.5 发布
2012-02-18 14:51 1175版本:bbossgroups-3.5 官网:http://w ... -
bboss 序列化功能详解
2012-01-27 11:04 1669bboss 序列化功能详解,bboss序列化组件是bbossg ... -
bboss 序列化机制重大改进-支持复杂对象及对象之间关系序列化和恢复功能
2012-01-09 23:19 1401bboss 序列化机制重大改进-支持复杂对象及对象之间关系序列 ... -
bbossgroups 3.4发布
2011-10-26 22:45 1154版本: bbossgroups-3.4 bboss gro ... -
bbossgroups 对象xml序列化/反序列化性能测试
2011-10-10 23:16 1361本文探讨开源项目bbossgroups 中对象xml序列化/反 ... -
bbossgroups 开发系列文章之一 最佳实践
2011-10-01 12:50 1502bbossgroups 开发系列文章之-最佳实践 一、概述 ... -
bboss 组件容器的使用方法浅析
2011-08-20 00:21 1670本文重点介绍bboss 中的4大组件容器的特点及使用方法 4 ... -
bbossgroups 3.3 发布
2011-08-19 23:02 1100bbossgroups 3.3 发布,该版本在3.2的基础上做 ... -
bbossgroups框架发布的jar包和依赖jar包概览
2011-08-09 23:16 2010bbossgroups框架发布的jar包和依赖jar包概览 j ... -
我们需要一站式解决方案还是混合组合方案
2011-08-05 14:10 1186这年头提供一站式解决方案的框架才具备真正的核心竞 ... -
bbossgroups的特色特点介绍
2011-07-10 10:49 1455很多朋友都在问bbossgroups框架和其他mvc框架 、s ... -
bbossgroups 相关资料整理
2011-06-24 08:13 1149为了方便大家了解bbossgroups,我特意把相关的资料整理 ... -
bbossgroups项目demo站点升级完毕,朋友们可以去看看
2011-06-19 22:52 1206bbossgroups项目demo站点升级完毕,访问地址: h ... -
开源项目bbossgroups,诚邀有志之士加盟
2011-06-15 10:03 537国内新兴的j2ee开源项目bbossgroups,诚邀有志之士 ...
相关推荐
在Java开发中,bbossgroups 3.1框架提供了一个名为SQLExecutor的组件,用于简化数据库操作。这个组件提供了一种高效的批处理和单条SQL执行的方式,它基于Apache License 2.0开源,允许开发者在遵守相应条款的情况下...
配置中,`alwaysUseFullPath`属性确保URL始终使用完整路径,而`handlerMap`引用了处理URL和控制器映射的注册表。 数据库访问组件和SQL语句配置文件是数据层的关键。bbossgroups提供了一套便捷的数据访问组件,允许...
本教程将围绕bbossgroups 3.0版本,深入讲解其核心概念、使用方法以及最佳实践。 首先,我们要理解bbossgroups的核心设计理念。它基于模块化架构,使得开发者可以根据项目需求选择合适的组件,避免了不必要的性能...
5. **RESTful架构**:Bboss支持RESTful风格的API设计,这使得系统的接口更加简洁、直观,易于理解和使用,尤其适合于Web服务的开发。 6. **持久层框架**:Bboss提供了持久层框架,简化了数据库操作,支持SQL动态...
**bbossgroups 3.1培训教程** bbossgroups 3.1是一个企业级J2EE开发框架,自2005年以来不断发展和完善,旨在提供高效、稳定的开发工具和解决方案。本教程将深入介绍bbossgroups 3.1的主要特性、发展历程以及其在...
### bbossgroups 3.0 发布,国内首款集成多技术的企业级J2EE开发框架 #### 概述 近日,bbossgroups 3.0 正式发布,这款国内首款集AOP(面向切面编程)、MVC(模型-视图-控制器)、Persistent(持久化)、JSP ...
提供的压缩包文件"bbossgroups 框架培训教程.pptx"和"Bbossgroups演示文档.pptx"可能包含了更多关于bboss mvc框架的详细信息和使用示例,包括如何配置和使用JSONP等特性。建议查阅这些文档以获取更深入的理解。 总...
该框架包含222个文件,包括164个Java源文件、14个XML配置文件、6个Gradle构建文件、6个JAR包文件、6个属性文件等,旨在支持跨域应用集群节点的会话共享与监控,并提供示例站点http://session.bbossgroups.com/...
弹性Tran老板数据交换模块使用文档: : Bboss是一个很好的Elasticsearch Java Rest客户端。 它运行并访问像mybatis这样的... 首先将BBoss的maven依赖项添加到pom.xml中: < dependency> < groupId>com.bbossgroups.p
BBoss(全称为bbossgroups)是一个专为企业级J2EE应用设计的开源框架,它为Java开发者提供了一系列强大的工具和服务,以简化Web应用程序的开发过程。该框架旨在提高开发效率,降低维护成本,同时保持高度的灵活性和...
java版地图源码弹性搜索Bboss Bboss 是一个很好的 elasticsearch ...如何使用 Elasticsearch BBoss。 首先将BBoss的maven依赖添加到你的pom.xml中: < dependency > < groupId >com.bbossgroups.p
12. bboss:bbossgroups是首个集成AOP、MVC、持久层、JSP标签库、分布式RPC服务和序列化组件的JavaEE企业级开发框架。 13. BeeFramework:BeeFramework是iOS平台的快速开发框架,特点包括易学易用、组件丰富,提供...