xiatian 5 meses atrás
pai
commit
c20302d7b7

+ 39 - 44
src/main/java/cn/com/qmth/export/GkExportPaperByCourseCode.java

@@ -1,57 +1,52 @@
 package cn.com.qmth.export;
 
 import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 
-/**网梯按课程导
+/**
+ * 网梯按课程导
+ * 
  * @author Administrator
  *
  */
 public class GkExportPaperByCourseCode {
-	private static Logger logger = LogManager.getLogger(GkExportPaperByCourseCode.class);
-	//试卷后缀
-	private static String paperSuff = "(240407)";
-	//数据库名
-	private static String dbName="guangkai2";
-	private static AtomicInteger count=new AtomicInteger(0);
-	
-	private static AtomicInteger valid=new AtomicInteger(0);
-	
-	private static AtomicInteger rectify=new AtomicInteger(0);
-	
-	public static void main(String[] args) {
-		logger.debug("导出开始");
-		Date start=new Date();
-		try {
-			MyProducer pro=new MyProducer();
-			Map<String, Object> param=new HashMap<>();
-			param.put("paperSuff", paperSuff);
-			param.put("dbName", dbName);
-			pro.startDispose(MyConsumer.class, 8, param);
-		} catch (Exception e) {
-			logger.error(e.getCause(), e);
-		}
-		logger.debug("导出结束,纠正:"+rectify);
-		logger.debug("导出结束,舍弃:"+valid);
-		Date end=new Date();
-		logger.debug("导出结束,耗时:"+((end.getTime()-start.getTime())/1000));
-	}
-
-
-	public static void  addDisposeCount() {
-		count.addAndGet(1);
-		logger.debug("处理了"+count);
-	}
-	
-	public static void  addRectify() {
-		rectify.addAndGet(1);
-	}
-	public static void  addValid() {
-		valid.addAndGet(1);
-	}
+
+    private static Logger logger = LogManager.getLogger(GkExportPaperByCourseCode.class);
+
+    private static AtomicInteger count = new AtomicInteger(0);
+
+    private static AtomicInteger valid = new AtomicInteger(0);
+
+    private static AtomicInteger rectify = new AtomicInteger(0);
+
+    public static void main(String[] args) {
+        logger.debug("导出开始");
+        Date start = new Date();
+        try {
+            MyProducer pro = new MyProducer();
+            pro.startDispose(MyConsumer.class, 8);
+        } catch (Exception e) {
+            logger.error(e.getCause(), e);
+        }
+        logger.debug("导出结束,纠正:" + rectify);
+        logger.debug("导出结束,舍弃:" + valid);
+        Date end = new Date();
+        logger.debug("导出结束,耗时:" + ((end.getTime() - start.getTime()) / 1000));
+    }
+
+    public static void addDisposeCount() {
+        count.addAndGet(1);
+        logger.debug("处理了" + count);
+    }
+
+    public static void addRectify() {
+        rectify.addAndGet(1);
+    }
+
+    public static void addValid() {
+        valid.addAndGet(1);
+    }
 }

+ 23 - 29
src/main/java/cn/com/qmth/export/GkExportPaperByCourseCode2.java

@@ -1,44 +1,38 @@
 package cn.com.qmth.export;
 
 import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 
-/**学位英语,不按课程导
+/**
+ * 学位英语,不按课程导
+ * 
  * @author Administrator
  *
  */
 public class GkExportPaperByCourseCode2 {
-	private static Logger logger = LogManager.getLogger(GkExportPaperByCourseCode2.class);
-	//试卷后缀
-	private static String paperSuff = "(240401)";
-	//数据库名
-	private static String dbName="guangkai3";
-	private static AtomicInteger count=new AtomicInteger(0);
-	
-	public static void main(String[] args) {
-		logger.debug("导出开始");
-		Date start=new Date();
-		try {
-			MyProducer2 pro=new MyProducer2();
-			Map<String, Object> param=new HashMap<>();
-			param.put("paperSuff", paperSuff);
-			param.put("dbName", dbName);
-			pro.startDispose(MyConsumer2.class, 8, param);
-		} catch (Exception e) {
-			logger.error(e.getCause(), e);
-		}
-		Date end=new Date();
-		logger.debug("导出结束,耗时:"+((end.getTime()-start.getTime())/1000));
-	}
 
+    private static Logger logger = LogManager.getLogger(GkExportPaperByCourseCode2.class);
 
-	public static void  addDisposeCount() {
-		count.addAndGet(1);
-		logger.debug("处理了"+count);
-	}
+    private static AtomicInteger count = new AtomicInteger(0);
+
+    public static void main(String[] args) {
+        logger.debug("导出开始");
+        Date start = new Date();
+        try {
+            MyProducer2 pro = new MyProducer2();
+            pro.startDispose(MyConsumer2.class, 8);
+        } catch (Exception e) {
+            logger.error(e.getCause(), e);
+        }
+        Date end = new Date();
+        logger.debug("导出结束,耗时:" + ((end.getTime() - start.getTime()) / 1000));
+    }
+
+    public static void addDisposeCount() {
+        count.addAndGet(1);
+        logger.debug("处理了" + count);
+    }
 }

+ 1 - 1
src/main/java/cn/com/qmth/export/GkExportPaperByCourseCode3.java

@@ -33,7 +33,7 @@ public class GkExportPaperByCourseCode3 {
         Date start = new Date();
         try {
             MyProducer3 pro = new MyProducer3();
-            pro.startDispose(MyConsumer3.class, 8, null);
+            pro.startDispose(MyConsumer3.class, 8);
         } catch (Exception e) {
             logger.error(e.getCause(), e);
         }

+ 1 - 12
src/main/java/cn/com/qmth/export/GkExportPaperByCourseCode4.java

@@ -1,8 +1,6 @@
 package cn.com.qmth.export;
 
 import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.log4j.LogManager;
@@ -18,12 +16,6 @@ public class GkExportPaperByCourseCode4 {
 
     private static Logger logger = LogManager.getLogger(GkExportPaperByCourseCode4.class);
 
-    // 试卷后缀
-    private static String paperSuff = "(241128)";
-
-    // 数据库名
-    private static String dbName = "guangkai241128";
-
     private static AtomicInteger count = new AtomicInteger(0);
 
     private static AtomicInteger valid = new AtomicInteger(0);
@@ -37,10 +29,7 @@ public class GkExportPaperByCourseCode4 {
         Date start = new Date();
         try {
             MyProducer4 pro = new MyProducer4();
-            Map<String, Object> param = new HashMap<>();
-            param.put("paperSuff", paperSuff);
-            param.put("dbName", dbName);
-            pro.startDispose(MyConsumer4.class, 8, param);
+            pro.startDispose(MyConsumer4.class, 8);
         } catch (Exception e) {
             logger.error(e.getCause(), e);
         }

+ 148 - 139
src/main/java/cn/com/qmth/export/Producer.java

@@ -10,143 +10,152 @@ import org.apache.logging.log4j.ThreadContext;
 
 public abstract class Producer {
 
-	private static Logger LOG = LogManager.getLogger(MyProducer.class);
-
-	private Basket basket;
-	
-	private List<Consumer<?>> consumers;
-	
-	/**
-	 * 业务参数
-	 */
-	private Map<String, Object> param;
-	
-	/**
-	 * 消费线程class
-	 */
-	private Class<? extends Consumer<?>> consumer;
-	/**
-	 * 	处理开始方法
-	 * @param consumer 消费线程class
-	 * @param consumerCount 消费线程数
-	 * @param param 生产者业务参数
-	 * @throws InstantiationException
-	 * @throws IllegalAccessException
-	 */
-	public void startDispose(Class<? extends Consumer<?>> consumer, int consumerCount,Map<String, Object> param)
-			throws InstantiationException, IllegalAccessException {
-		this.consumers=new ArrayList<Consumer<?>>();
-		Basket basket = new Basket(consumerCount);
-		this.basket = basket;
-		this.consumer = consumer;
-		this.param=param;
-		//启动消费者
-		startConsumer();
-		//开始处理
-		dispose();
-	}
-
-	private void dispose() {
-		try {
-			LOG.info("*******************Producer:开始处理");
-			// 生产数据
-			produce(param);
-			LOG.info("*******************Producer:生产结束");
-			// 发送生产结束信息
-			endConsumer();
-			LOG.info("*******************Producer:成功发送生产结束信息");
-			// 等待子线程结束
-			LOG.info("*******************Producer:等待消费线程结束");
-			await();
-			LOG.info("*******************Producer:消费线程已结束");
-			// 判断子线程是否正常结束
-			if (basket.isExcuteError()) {
-				throw new StatusException("1000001", "处理失败,线程异常");
-			}
-			LOG.info("*******************Producer:结束处理");
-		} catch (StatusException e) {
-			// 获取异常时发送异常结束信息
-			endConsumerAsError();
-			throw e;
-		} catch (Exception e) {
-			// 获取异常时发送异常结束信息
-			endConsumerAsError();
-			throw new StatusException("1000002", "处理失败", e);
-		}
-	}
-
-	/**
-	 * 启动消费者
-	 * 
-	 * @param consumer
-	 * @throws InstantiationException
-	 * @throws IllegalAccessException
-	 */
-	private void startConsumer() throws InstantiationException, IllegalAccessException {
-		int count = basket.getConsumerCount();
-		for (int i = 0; i < count; i++) {
-			Consumer<?> co = (Consumer<?>) consumer.newInstance();
-			co.initResult();
-			co.setBasket(basket);
-			co.setTraceId(ThreadContext.get("TRACE_ID"));
-			consumers.add(co);
-			co.start();
-		}
-
-	}
-
-	/**
-	 * 出异常后修改标识
-	 * 
-	 */
-	private void endConsumerAsError() {
-		basket.setExcuteError(true);
-	}
-
-	/**
-	 * 正常结束消费者
-	 * 
-	 * @throws InterruptedException
-	 */
-	private void endConsumer() throws InterruptedException {
-		int count = basket.getConsumerCount();
-		EndObject eo = new EndObject();
-		for (int i = 0; i < count; i++) {
-			basket.offer(eo);
-		}
-
-	}
-
-	/**
-	 * 生产数据
-	 * 
-	 * @param ob
-	 * @throws InterruptedException
-	 */
-	protected void offer(Object ob) throws InterruptedException {
-		synchronized (basket) {
-			basket.offer(ob);
-		}
-	}
-
-	/**
-	 * 等待所有消费者结束
-	 * 
-	 * @throws InterruptedException
-	 */
-	private void await() throws InterruptedException {
-		basket.await();
-	}
-
-	protected abstract void produce(Map<String, Object> param) throws Exception;
-
-	public List<Consumer<?>> getConsumers() {
-		return consumers;
-	}
-
-	public void setConsumers(List<Consumer<?>> consumers) {
-		this.consumers = consumers;
-	}
-
-	
+    private static Logger LOG = LogManager.getLogger(MyProducer.class);
+
+    private Basket basket;
+
+    private List<Consumer<?>> consumers;
+
+    /**
+     * 业务参数
+     */
+    private Map<String, Object> param;
+
+    /**
+     * 消费线程class
+     */
+    private Class<? extends Consumer<?>> consumer;
+
+    /**
+     * 处理开始方法
+     * 
+     * @param consumer
+     *            消费线程class
+     * @param consumerCount
+     *            消费线程数
+     * @param param
+     *            生产者业务参数
+     * @throws InstantiationException
+     * @throws IllegalAccessException
+     */
+    public void startDispose(Class<? extends Consumer<?>> consumer, int consumerCount, Map<String, Object> param)
+            throws InstantiationException, IllegalAccessException {
+        this.consumers = new ArrayList<Consumer<?>>();
+        Basket basket = new Basket(consumerCount);
+        this.basket = basket;
+        this.consumer = consumer;
+        this.param = param;
+        // 启动消费者
+        startConsumer();
+        // 开始处理
+        dispose();
+    }
+
+    public void startDispose(Class<? extends Consumer<?>> consumer, int consumerCount)
+            throws InstantiationException, IllegalAccessException {
+        startDispose(consumer, consumerCount, null);
+    }
+
+    private void dispose() {
+        try {
+            LOG.info("*******************Producer:开始处理");
+            // 生产数据
+            produce(param);
+            LOG.info("*******************Producer:生产结束");
+            // 发送生产结束信息
+            endConsumer();
+            LOG.info("*******************Producer:成功发送生产结束信息");
+            // 等待子线程结束
+            LOG.info("*******************Producer:等待消费线程结束");
+            await();
+            LOG.info("*******************Producer:消费线程已结束");
+            // 判断子线程是否正常结束
+            if (basket.isExcuteError()) {
+                throw new StatusException("1000001", "处理失败,线程异常");
+            }
+            LOG.info("*******************Producer:结束处理");
+        } catch (StatusException e) {
+            // 获取异常时发送异常结束信息
+            endConsumerAsError();
+            throw e;
+        } catch (Exception e) {
+            // 获取异常时发送异常结束信息
+            endConsumerAsError();
+            throw new StatusException("1000002", "处理失败", e);
+        }
+    }
+
+    /**
+     * 启动消费者
+     * 
+     * @param consumer
+     * @throws InstantiationException
+     * @throws IllegalAccessException
+     */
+    private void startConsumer() throws InstantiationException, IllegalAccessException {
+        int count = basket.getConsumerCount();
+        for (int i = 0; i < count; i++) {
+            Consumer<?> co = (Consumer<?>) consumer.newInstance();
+            co.initResult();
+            co.setBasket(basket);
+            co.setTraceId(ThreadContext.get("TRACE_ID"));
+            consumers.add(co);
+            co.start();
+        }
+
+    }
+
+    /**
+     * 出异常后修改标识
+     * 
+     */
+    private void endConsumerAsError() {
+        basket.setExcuteError(true);
+    }
+
+    /**
+     * 正常结束消费者
+     * 
+     * @throws InterruptedException
+     */
+    private void endConsumer() throws InterruptedException {
+        int count = basket.getConsumerCount();
+        EndObject eo = new EndObject();
+        for (int i = 0; i < count; i++) {
+            basket.offer(eo);
+        }
+
+    }
+
+    /**
+     * 生产数据
+     * 
+     * @param ob
+     * @throws InterruptedException
+     */
+    protected void offer(Object ob) throws InterruptedException {
+        synchronized (basket) {
+            basket.offer(ob);
+        }
+    }
+
+    /**
+     * 等待所有消费者结束
+     * 
+     * @throws InterruptedException
+     */
+    private void await() throws InterruptedException {
+        basket.await();
+    }
+
+    protected abstract void produce(Map<String, Object> param) throws Exception;
+
+    public List<Consumer<?>> getConsumers() {
+        return consumers;
+    }
+
+    public void setConsumers(List<Consumer<?>> consumers) {
+        this.consumers = consumers;
+    }
+
 }