一个多线程和队列的实例演示
生活随笔
收集整理的這篇文章主要介紹了
一个多线程和队列的实例演示
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
功能需求:設(shè)備策略升級
詳細(xì)描述:用戶可以不定期的創(chuàng)建1條策略來升級選擇的多個設(shè)備從a版本到b版本???????????????????
解決方案 java代碼 創(chuàng)建個無界帶自動回收機制的線程池ExecutorService threadPool = Executors.newCachedThreadPool(); 創(chuàng)建策略 //把每條策略要升級設(shè)備放入隊列中 LinkedBlockingQueue<Integer> queue = new LinkedBlockingQueue<Integer>();
????for(int j=startNum;j<endNum;j++)
????{
?????queue.offer(dev[j]);
????} StratageConsumer consumer=new StratageConsumer(queue); 每次創(chuàng)建策略后加入線程池 threadPool.execute(consumer); 啟動策略 @Overridepublic void run() {Integer data=null;while(Thread.currentThread().isInterrupted()==false && isRunning){//System.out.println("運行線程數(shù)"+Thread.getAllStackTraces().size());try {//因為BlockingQueue是線程安全的,所以不用考慮同步問題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+"出現(xiàn)異常"+e.getStackTrace());}}}
轉(zhuǎn)載于:https://www.cnblogs.com/4wei/archive/2012/12/24/2847263.html
總結(jié)
以上是生活随笔為你收集整理的一个多线程和队列的实例演示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在SqlServer存储过程中使用Cur
- 下一篇: [结对2]必应缤纷桌面软件测试报告