功能需求:设备策略升级

详细描述:用户可以不定期的创建1条策略来升级选择的多个设备从a版本到b版本

解决方案
java代码
创建个无界带自动回收机制的线程池
ExecutorService threadPool = Executors.newCachedThreadPool();
创建策略
//把每条策略要升级设备放入队列中
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);
启动策略
@Overridepublic void run() {Integer data=null;while(Thread.currentThread().isInterrupted()==false && isRunning){//System.out.println("运行线程数"+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+"出现异常"+e.getStackTrace());}}}

转载于:https://www.cnblogs.com/4wei/archive/2012/12/24/2847263.html

一个多线程和队列的实例演示相关推荐

  1. FFmpe写一个多线程播放器1 基础逻辑和队列定义

    播放器线程模型 1:主线程输入文件 - 然后创建解复用线程 – 2 :解复用线程解码书pkt放入各自AV队列中 ---- 然后创建视频解码线程 3:音频解码在主线程中 由音频参数定义的回调函数决定 视 ...

  2. RabbitMQ快速入门及实例演示

    RabbitMQ 先做起来,再去想其他. 1.MQ 消息队列概念 MQ(message queue)消息队列,FIFO先入先出.对服务器的请求先加入到消息队列中,再由消息队列来进行请求的分发. 还是一 ...

  3. PYTHON——多线程:队列Queue数据结构

    1.队列模块简介 队列是一种数据结构,用于存放数据,类似列表.它是先进先出模式(FIFO模式),类似管道一般: 单线程不需要用到队列Queue,它主要用在多线程之间的,Queue称为多线程利器. 列表 ...

  4. java多线程阻塞队列_阻塞队列和多线程消费者,如何知道何时停止

    我有一个单线程生成器,它创建一些任务对象,然后添加到 ArrayBlockingQueue (具有固定大小) . 我也开始了一个多线程的消费者 . 这是一个固定的线程池( Executors.newF ...

  5. ios kvo 要引入_iOS多线程之超实用理论+demo演示(可下载)

    [toc] 背景简介 在初学iOS相关知识过程中,大多都对多线程有些恐惧的心里,同时感觉工作中用上的概率不大.但是如果平时不多积累并学透多线程,当工作中真的需要用到的时候,就很可能简单百度后把一些知识 ...

  6. 【java】ThreadLocal 内存泄漏 代码演示 实例演示

    1.概述 转载:ThreadLocal 内存泄漏 代码演示 实例演示 首先看文章:ThreadLocal内存泄露原因分析 相关文章: [高并发]ThreadLocal.InheritableThrea ...

  7. Python多线程结合队列下载百度音乐的方法

    本文实例讲述了Python多线程结合队列下载百度音乐的方法.分享给大家供大家参考.具体如下: 一直想做个下载音乐的脚本,后来决定就拿百度音乐开刀,经过多次分析,终于制作了一个下载百度音乐的脚本,目前只 ...

  8. Linux下C++多线程编程(入门实例)

    C++ 多线程 多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序.一般情况下,两种类型的多任务处理:基于进程和基于线程. 基于进程的多任务处理是程序的并发执行. 基于 ...

  9. jQuery数组处理详解(含实例演示)

    jQuery的数组处理,便捷,功能齐全. 最近的项目中用到的比较多,深感实用,一步到位的封装了很多原生js数组不能企及的功能. 最近时间紧迫,今天抽了些时间回过头来看 jQuery中文文档 中对数组的 ...

最新文章

  1. 网络安全技术分析:DDoS的攻与防
  2. mysqljs在koa2中的正确姿势
  3. c++ 导入caffe
  4. Node-Web模块
  5. 『爬虫四步走』手把手教你使用Python抓取并存储网页数据!
  6. 自动化测试框架实践2--STAF
  7. webpack开发配置
  8. 【转】ASCII码表
  9. 在window7 64位下Oracle 10g 数据库中PLSQL Developer配置和使用
  10. mybatis mysql 自增_利用Java的MyBatis框架获取MySQL中插入记录时的自增主键
  11. git与gitlab使用教程
  12. 小米手机不能发短信的一种解决方法--重新设置短信中心号码
  13. 邮箱 签名 / 电子名片 设置
  14. 抢滩直播基地:有人黯然退场,有人闪亮进场,还有人只当跳板
  15. MEMS加速度计的概念
  16. 室外无人驾驶挑战赛小结-2019‘恩智浦’杯全国大学生智能车竞赛
  17. 免费获取华夏邓白氏编码(021-26107504)
  18. AC695x学习笔记(1): 简介
  19. 可以用计算机验算易经吗,用易经八卦原型设计计算机预测程序
  20. 爱普生打印机维修资料大全

热门文章

  1. 游戏中的实时光线追踪技术与技巧
  2. MySQLWorkbench链接MySQL数据库
  3. SDN第二章 Ubuntu系统常用操作命令
  4. PHP面试题:简述Linux下安装PHP的过程?
  5. 以最短的宕机时间升级到Oracle 10g
  6. selenium 元素定位常用的方法
  7. python守护线程t.setDaemon(True)
  8. 【读书】《非暴力沟通》
  9. 机器学习实战——特征工程之数据预处理
  10. 在 Linux 上安装 Oracle 数据库 11g