talent-thread-pool-2.0.0发布:java线程池框架

来源:互联网 发布:淘宝怎么查一年前订单 编辑:程序博客网 时间:2024/06/03 15:46
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 
Java代码  收藏代码
  1. SynRunnableThreadPoolExecutor threadExecutor = new SynRunnableThreadPoolExecutor("quickstart-thread-pool");  

2、实现你的业务Runnable(理论上只需要实现AbstractSynRunnable即可,但一般都是带上队列的,所以本框架也提供了队列AbstractQueueRunnable) 
Java代码  收藏代码
  1. public class QuickStartRunnable<T> extends AbstractQueueRunnable<T>  
  2. {  
  3.     private static java.util.concurrent.atomic.AtomicLong atomicLong = new AtomicLong();  
  4.   
  5.     @Override  
  6.     public void run()  
  7.     {  
  8.         checkSyn();  
  9.   
  10.         T t = null;  
  11.         while ((t = this.getMsgQueue().poll()) != null)  
  12.         {  
  13.             System.out.println(t.toString() + "--" + atomicLong.incrementAndGet());  
  14.         }  
  15.     }  
  16.   
  17.     /** 
  18.      * 检查线程池是不是同步调用runnable的(在同一时刻,只有同一个runnable对象被调用)。 
  19.      */  
  20.     private static void checkSyn()  
  21.     {  
  22.         String threadName = Thread.currentThread().getName();  
  23.         File dir = new File("d:/log/dfd/");  
  24.         dir.mkdirs();  
  25.         File f = new File(dir, threadName + ".txt");  
  26.         if (!f.exists())  
  27.         {  
  28.             try  
  29.             {  
  30.                 f.createNewFile();  
  31.             } catch (IOException e)  
  32.             {  
  33.                 e.printStackTrace();  
  34.             }  
  35.         }  
  36.     }  
  37. }  

3、提交业务Runnable到SynRunnableThreadPoolExecutor 
Java代码  收藏代码
  1. 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多万数据,没有任何丢包
原创粉丝点击