您的位置:首页 > 编程语言 > Java开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: