最近由于公司的业务需求,需要使用线程池来进行对数据进行处理,所以就简单的学习了一下线程池的东西,刚接触感觉挺难的,不过使用了就不感觉那么难了,还是蛮简单的,

package com.yd.sms.job;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import org.apache.axis.components.threadpool.ThreadPool;
import org.hibernate.mapping.Array; import com.yd.sms.api.local.SmsRunLocal;
import com.yd.sms.bean.entity.ActStatList;
import com.yd.sms.bean.local.ActStatListFacadeLocal;
import com.yd.sms.common.EJBHomeFactory; /**
*
* @author allen.tang
*
*/
public class SmsCleanJob { private final static ExecutorService threadPool; //线程池 private static int maxThread; //需要启动的最大线程数 private static int maxSingletonThread; //单个线程执行的任务数量 static{
ResourceBundle bundle = PropertyResourceBundle.getBundle("config"); //获取配置文件信息
String maxThread_str = bundle.getString("threadPool_maxThread");
String maxSingletonThread_str = bundle.getString("threadPool_maxSingletonThread");
maxThread = Integer.valueOf(maxThread_str);
maxSingletonThread = Integer.valueOf(maxSingletonThread_str);
threadPool = Executors.newFixedThreadPool(maxThread);
} /**
* 执行
*/
public void execute(){
long startTime = System.currentTimeMillis();
String[] names = new String[]{"a", "b", "c", "d", "e"}; System.out.println("********开始进入线程池");
for(int i = 0; i < names.length; i ++){
threadPool.submit(new SmsCleanThread(names[i]));
}
long endTime = System.currentTimeMillis(); //由于公司的业务要求每个几秒就会有一批数据进来,所以这里在后面没有关闭线程池
System.out.println("********已经退出线程池:总共耗时:"+((endTime - startTime)/ 1000.0)+"秒");
System.out.println("========线程池已经执行结束!");
} /**
* 线程
* @author allen.tang
*
*/
class SmsCleanThread implements Runnable{ private String str; public SmsCleanThread(String str){
this.str = str;
} public void run() {
System.out.print(str+"执行中。。。"); } } } }

我这里所使用的是已经被封装好的线程池,所以挺简单的,不过这个也是用的最多的一个,在一开始的时候启动确定数量的线程,方便调用。

最新文章

  1. JS中typeof与instanceof的区别
  2. 7、ASP.NET MVC入门到精通——第一个ASP.NET MVC程序
  3. SpringMVC中使用Json传数据
  4. vc6.0运用mysql数据库中的编码所导致的乱码问题(接收和输出的编码必须要一致)
  5. GCD异步加载网络图片
  6. 荷兰国旗问题 划分成3部分 leecode
  7. php如何返回一个image文件
  8. Unity3D游戏开发之小地图的实现
  9. MySQL的备份与还原
  10. 面试题-JDBC
  11. Java 面试宝典
  12. thinkphp自动创建数据对象分析
  13. elasticSearch聚合sum查询
  14. HDU6186(线段树)
  15. POJ 1458 Common Subsequence (DP+LCS,最长公共子序列)
  16. Hyperledger Fabric(v1.1.0)编译时遇到的问题
  17. dp:FZU2030括号问题
  18. Spring IOC和IOC容器
  19. springMVC中不通过注解方式获取指定Service的javabean
  20. luoguP3232 [HNOI2013]游走 贪心 + 概率期望 + 高斯消元

热门文章

  1. PHP23 AJAX分页
  2. PHP01 LAMP网站构建
  3. Linux的Network Tunnel技术
  4. Java垃圾回收之老年代垃圾收集器
  5. Mac下Apache服务器的初步搭建
  6. 实现验证的vsftpd虚拟用户
  7. Django框架基础知识14-类视图
  8. 为什么在属性中设置private set
  9. MQ报错java.lang.IllegalStateException: Failed to load ApplicationContext
  10. CDOJ 1220 The Battle of Guandu