背景
功能需求:设备策略升级
详细描述:用户可以不定期的创建1条策略来升级选择的多个设备从a版本到b版本
解决方案
参考代码
创建个无界带自动回收机制的线程池
ExecutorService threadPool = Executors.newCachedThreadPool();
创建策略
1 2 3 4 5 6
| LinkedBlockingQueue<Integer> queue = new LinkedBlockingQueue<Integer>(); for(int j=startNum;j<endNum;j++){ queue.offer(dev[j]); } StratageConsumer consumer=new StratageConsumer(queue);
|
每次创建策略后加入线程池
threadPool.execute(consumer);
启动策略
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| @Override public void run() { Integer data=null; while(Thread.currentThread().isInterrupted()==false && isRunning) { try { data = queue.take(); if(data!=null) { iCrawcomplete.update(data); } if(queue.isEmpty()){ try { Thread.sleep(360*1000); } catch (Exception e) { } Thread.currentThread().interrupt(); isRunning = false; } Thread.sleep(60*1000); }catch (Exception e) { logger.info("抓取"+url+data+"出现异常"+e.getStackTrace()); } } }
|