Java并发编程:Thread类的使用(1)
2015-12-11 15:20
513 查看
单线程使用、同步
项目环境:项目中有一个1分钟轮询的Job,每次轮询会启动一个线程(Thread)
但是会出现1分钟内,这个线程的工作不能处理完毕,下一个轮询的线程就进来了,会造成数据多次处理。这不是我想要的
在这种环境下,考虑到需要使用synchronized(同步锁)
确保数据的的唯一性和准确性。
/**
* 定时处理批任务
*
* @author: lgoodbook
* @data 2015年11月2日 上午10:15:20
* @version V1.0
*/
public class ProcessJob implements Job {
private static final Logger logger = LoggerFactory .getLogger(ProcessJob.class); @Resource private BatchService batchService; public void start() { logger.info("Start Process"); MyThread thread = new MyThread(); thread.start(); } // 自动 处理 内部类 class MyThread extends Thread { private Logger logger = LoggerFactory.getLogger(MyThread.class); public void run() { //线程同步 synchronized(batchService){ logger.info("任务线程调度开始:" + new Date()); // 处理未处理 、需重复处理的批次 batchService.startProcess(); } } } @Override public void execute(JobExecutionContext context) throws JobExecutionException { logger.info("Kick your ass and fuck your mother"); }
}
注:同步是一种高开销的操作,因此应该尽量减少同步的内容。
以上代码还有待改进
文章借鉴:http://www.cnblogs.com/dolphin0520
相关文章推荐
- spark本地java开发环境的搭建
- struts2国际化设置
- 6 Java基础 多态
- Spring数据源的配置
- 解决MyEclipse10.7部署报错抛空指针异常问题的方法
- [原创]Spring MVC 学习 之 - URL参数传递
- 5 Java基础 继承 接口
- 一步步搭建java信息管理系统00 - 前言
- Java汉字与16进制数相互转换
- SPRING 学习
- java及jdbc与sql之间日期的转换
- 4 Java基础 静态
- Struts2_学习笔记(五)----访问Web元素、include、默认Action、Action总结
- java获取视频的信息
- 3 Java基础 面向对象
- 一步步搭建java信息管理系统00 - 前言
- 两种Java数字交换算法哪个快。
- Java的读文件和写文件
- Eclipse开发过程中个VM Arguments的设置
- Java学习笔记----线程2