java多线程处理任务
2016-06-18 14:27
405 查看
最近用到使用多线程处理给用户发送站内消息的问题,想到使用java自带的线程池进行处理这个问题,具体如下:
定义一个线程:
使用线程池
定义一个线程:
package com.qlwb.util; import org.apache.log4j.Logger; import redis.clients.jedis.ShardedJedis; import com.qlwb.common.redispool.BusinessRedisParam; import com.qlwb.common.redispool.BusinessRedisPool; /** * * * @类编号: * @类名称:DealUserTools * @内容摘要: 消息处理 * @author:鹿伟伟 * @创建日期:2016年6月18日 下午1:23:03 * @修改人: * @修改日期: * @修改描述:简单描述修改的内容 * @version 1.0.0 * */ public class DealUserTools extends Thread{ private final Logger logger = Logger.getLogger(DealUserTools.class); private int minId=0; private int maxId=0; public DealUserTools(int minId,int maxId){ this.maxId=maxId; this.minId=minId; } public void run(){ ShardedJedis jedis=null; logger.info("站内消息处理开始"); long t11=System.currentTimeMillis(); try { //jedis=BusinessRedisPool.getInstance().getJedis(); for(int i=minId;i<=maxId;i++){ logger.info(Thread.currentThread().getName()+"=="+i); //TODO //业务处理 } } } catch (Exception e) { logger.error("站内消息状态设置异常:", e); }finally{ BusinessRedisPool.getInstance().returnResource(jedis); } long t12=System.currentTimeMillis(); System.out.println("站内消息处理用时"+(t12-t11)+"ms"); } public static void main(String[] args) { } }
使用线程池
ExecutorService pool = Executors.newFixedThreadPool(count); Map<String,Object> mapParam=new HashMap<String, Object>(); try { for(int i=0;i<=count;i++){ Thread t1= new DealUserTools(minId,maxId); pool.execute(t1); } pool.shutdown(); } catch (Exception e) { logger.error("站内消息getUserId:", e); }
相关文章推荐
- java多线程处理任务
- java线程的等待、通知机制【读书笔记】
- JAVA_OA(六):SpringMVC处理异常
- java调接口实现发送手机短信验证码功能,手机验证码,接口调用
- spring 配置多数据源问题,如何彼此隔离互相不影响
- java文字识别技术(亲测,识别率很高)
- 通过FileUpload实现文件的上传
- Spring各jar包的作用
- java读取文件内容按照值出现的次数排序
- JAVA验证是否是Email地址和验证是否是手机号码
- JAVA基础知识点总结
- JAVA_OA(六):SpringMVC拦截器
- JavaWeb之BaseDao的写法
- Java多线程编程总结
- Spring MVC防重复提交
- java实现图的深度优先搜索和广度优先搜索
- java自学笔记之集合概述一
- Mac OS X 下Java开发环境配置
- 存储过程与Java调用
- Java robot 例子