SchedulerService.java 1.21 KB
package com.sitech.schedule;

import java.util.concurrent.ConcurrentLinkedQueue;

import org.apache.log4j.Logger;

import com.sitech.schedule.bean.Job;
import com.sitech.util.ThreadPoolUtil;

/**
 * 采集任务执行管理
 */
public class SchedulerService extends Thread {
	private Logger logger = Logger.getLogger(SchedulerService.class);
	private static SchedulerService service = new SchedulerService();

	private ConcurrentLinkedQueue<Job> collJobQueue = new ConcurrentLinkedQueue<Job>();

	public void run() {
		while (true) {
			try{
				if (!collJobQueue.isEmpty()) {
					Job job = collJobQueue.poll();
					if (job == null) {
						logger.warn("Get a job is null!!");
					} else {
						ThreadPoolUtil.executorService.execute(new CollJobThread(job));
					}
				} else {
					try {
						Thread.sleep(1000L);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}catch (Exception e) {
				logger.error("Exception while run SchedulerService!!", e);
			}
			
		}
	}

	private SchedulerService() {

	}

	public static SchedulerService getInstance() {
		return service;
	}

	public void addJob(Job job) {
		logger.info("-- Add new job to collJobQueue:" + job.toString());
		collJobQueue.add(job);
	}
}