talent-thread-pool是什么?
talent-thread-pool是基于jdk5内置线程池的封装,省却你一些事件的框架
1、帮你完成使用线程池所带来的繁琐的同步安全工作
2、为你提供一个更靠谱的RejectedExecutionHandler(jdk自带的是抛异常,本框架默认的是用定时继续提交)
3、为你提供一个更友好的ThreadFactory(jdk自带的Factory产生出来的Thread名字是形如thread-pool-1的,本框架默认的是形如:myname-1,其中“myname”是应用提供的参数)
4、提供更简单的ThreadPoolExecutor构造器,当然你也可以根据业务需要构造更细化的ThreadPoolExecutor对象。
快速使用
1、构造SynRunnableThreadPoolExecutor
SynRunnableThreadPoolExecutor threadExecutor = new SynRunnableThreadPoolExecutor("quickstart-thread-pool");
2、实现你的业务Runnable(理论上只需要实现AbstractSynRunnable即可,但一般都是带上队列的,所以本框架也提供了队列AbstractQueueRunnable)
public class QuickStartRunnable<T> extends AbstractQueueRunnable<T>
{
private static java.util.concurrent.atomic.AtomicLong atomicLong = new AtomicLong();
@Override
public void run()
{
checkSyn();
T t = null;
while ((t = this.getMsgQueue().poll()) != null)
{
System.out.println(t.toString() + "--" + atomicLong.incrementAndGet());
}
}
/**
* 检查线程池是不是同步调用runnable的(在同一时刻,只有同一个runnable对象被调用)。
*/
private static void checkSyn()
{
String threadName = Thread.currentThread().getName();
File dir = new File("d:/log/dfd/");
dir.mkdirs();
File f = new File(dir, threadName + ".txt");
if (!f.exists())
{
try
{
f.createNewFile();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
}
3、提交业务Runnable到SynRunnableThreadPoolExecutor
threadExecutor.execute(quickStartRunnable);
具体可以参看com.talent.platform.threadpool.quickstart.QuickStartMain和com.talent.platform.threadpool.quickstart.QuickStartRunnable
谁在使用
1、某通讯设备商的网管系统,
2、本人自己在项目中使用,下面的这个图可以让大家放心使用(本框架+talent-socket框架实现的最小smpp协议)。这个图展示了每秒收发3.2W条数据的场景(3.2w=8K*4)
图1:收发速度3.2w/s
图2:稳定性:用5K的速度跑了3000多万数据,没有任何丢包
- 大小: 77.4 KB
- 大小: 77.5 KB
分享到:
相关推荐
赠送jar包:jboss-websocket-api_1.1_spec-2.0.0.Final.jar; 赠送原API文档:jboss-websocket-api_1.1_spec-2.0.0.Final-javadoc.jar; 赠送源代码:jboss-websocket-api_1.1_spec-2.0.0.Final-sources.jar; 赠送...
tomcat-redis-session-manager-2.0.0.jar,可用于Tomcat8下Redis的Session共享,亲测可用,还需要下载另外两个jar包:commons-pool2-2.4.2.jar和jedis-2.9.0.jar,maven仓库有,此处不再上传
《Tomcat Redis Session Manager 2.0.0:实现高效且可扩展的Session共享机制》 在现代Web应用中,Session管理是至关重要的一个环节,它用于存储用户的状态信息,如登录状态、购物车等。然而,随着分布式系统的普及...
spark-streaming-flume-sink_2.11-2.0.0.jar的jar包。
mybatis mybatis-spring-boot-starter-2.0.0.jar下载
实验环境: VMware? Workstation 12 Pro 系统平台: 系统版本:CentOS Linux release 7.4.1709 内核 3.10.0-693.el7.x86_64 软件版本: redis版本:3.2.10 tomcat版本:7.0.76 ... commons-pool2-2.2.jar,
实现多个tomcat之间session共享问题,将此jar包放入tomcat lib目录,并在content.xml中配置如下: <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> ...
赠送jar包:jboss-websocket-api_1.1_spec-2.0.0.Final.jar; 赠送原API文档:jboss-websocket-api_1.1_spec-2.0.0.Final-javadoc.jar; 赠送源代码:jboss-websocket-api_1.1_spec-2.0.0.Final-sources.jar; 赠送...
可用的spring-cloud-starter-netflix-zuul-2.0.0.RELEASE包,maven上的spring-cloud-starter-netflix-zuul-2.0.0.RELEASE已经没了。
jcl-over-slf4j-2.0.0-alpha2
java-all-call-graph-main-2.0.0.zip java-callgraph2-main-2.0.5.zip
androidx-lifecycle-livedata-core-2.0.0.aar
直接解压,通过命令直接启动: java -jar rocketmq-console-ng-2.0.0.jar --server.port=8080 --rocketmq.config.namesrvAddr=:9876
mina-core-2.0.0-M6.jar mina-example-2.0.0-M6.jar mina-filter-codec-netty-2.0.0-M6.jar mina-filter-compression-2.0.0-M6.jar mina-integration-beans-2.0.0-M6.jar mina-integration-jmx-2.0.0-M6.jar mina-...
最新的3dsmax官方杀毒 脚本
赠送jar包:spring-plugin-core-2.0.0.RELEASE.jar; 赠送原API文档:spring-plugin-core-2.0.0.RELEASE-javadoc.jar; 赠送源代码:spring-plugin-core-2.0.0.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring...
赠送原API文档:kafka-clients-2.0.0-javadoc.jar; 赠送源代码:kafka-clients-2.0.0-sources.jar; 赠送Maven依赖信息文件:kafka-clients-2.0.0.pom; 包含翻译后的API文档:kafka-clients-2.0.0-javadoc-API文档...
这次我们有两个版本的DOM4J库:1.6.1和2.0.0-ALPHA。这两个版本在功能、性能和API设计上都有所差异。 首先,DOM4J 1.6.1是较早的一个稳定版本,广泛应用于各种项目。它支持SAX和DOM解析器,同时提供了基于事件的...