Java线程池的简单使用
2024-08-23 09:28:45
最近由于公司的业务需求,需要使用线程池来进行对数据进行处理,所以就简单的学习了一下线程池的东西,刚接触感觉挺难的,不过使用了就不感觉那么难了,还是蛮简单的,
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+"执行中。。。"); } } } }
我这里所使用的是已经被封装好的线程池,所以挺简单的,不过这个也是用的最多的一个,在一开始的时候启动确定数量的线程,方便调用。
最新文章
- JS中typeof与instanceof的区别
- 7、ASP.NET MVC入门到精通——第一个ASP.NET MVC程序
- SpringMVC中使用Json传数据
- vc6.0运用mysql数据库中的编码所导致的乱码问题(接收和输出的编码必须要一致)
- GCD异步加载网络图片
- 荷兰国旗问题 划分成3部分 leecode
- php如何返回一个image文件
- Unity3D游戏开发之小地图的实现
- MySQL的备份与还原
- 面试题-JDBC
- Java 面试宝典
- thinkphp自动创建数据对象分析
- elasticSearch聚合sum查询
- HDU6186(线段树)
- POJ 1458 Common Subsequence (DP+LCS,最长公共子序列)
- Hyperledger Fabric(v1.1.0)编译时遇到的问题
- dp:FZU2030括号问题
- Spring IOC和IOC容器
- springMVC中不通过注解方式获取指定Service的javabean
- luoguP3232 [HNOI2013]游走 贪心 + 概率期望 + 高斯消元