1、创建队列任务,实现Runnable接口
public class CouponQueueTask implements Runnable
2、定义静态队列对象。
public static BlockingQueue<CouponGenerateDomain> couponGenerateDomainArrayBlockingQueue = new ArrayBlockingQueue<>(100) ;
3、实现run方法,循环读区队列内容。
@Override public void run() { while (true){ if(couponGenerateDomainArrayBlockingQueue.size()==0){ continue; } CouponGenerateDomain couponGenerateDomain=null; BatchDomain batchDomain=null; int generateNum=0; try { couponGenerateDomain=couponGenerateDomainArrayBlockingQueue.take();
4、启动线程,并设置线程监听程序。
private static Thread couponQueueTask=null ; ExecutorService executorService = Executors.newFixedThreadPool(10); /** * 定时监控线程是否挂掉 */ @Scheduled(cron="0/30 * * * * ? " ) private void checkThread(){ if(couponQueueTask ==null || !couponQueueTask.isAlive()){ couponQueueTask = new Thread(new CouponQueueTask()) ; couponQueueTask.start(); logger.info("indexThread new start"); } } @Override public void run(String... strings) throws Exception { couponQueueTask= new Thread(new CouponQueueTask()) ; executorService.execute(couponQueueTask); }