当前位置: 首页 > news >正文

建材公司网站建设方案我爱777在线观看

建材公司网站建设方案,我爱777在线观看,公司网站维护,goland 网站开发上节回顾 在上一节当中#xff0c;已经实现了一个线程池#xff0c;在本节当中#xff0c;我们需要添加拒绝策略。这里使用到了策略模式的设计模式#xff0c;因为拒绝策略是多种的#xff0c;我们需要将这个权利下放给调用者#xff08;由调用者来指定我要采取哪种策略…上节回顾 在上一节当中已经实现了一个线程池在本节当中我们需要添加拒绝策略。这里使用到了策略模式的设计模式因为拒绝策略是多种的我们需要将这个权利下放给调用者由调用者来指定我要采取哪种策略而线程池只需要调用拒绝的接口即可。 步骤 1定义拒绝策略接口 2在线程池中加入拒绝策略参数 3自行调用测试 1.定义接口类 FunctionalInterface interface RejectPolicyT{//注意传递参数void reject(BlockQueueT queue,Runnable task); }2.线程池中添加接口以及调用方法 Slf4j class ThreadPool {//任务队列private BlockQueueRunnable taskQueue;//线程集合 我们需要对线程做一个包装private HashSetWorker workers new HashSet();//核心线程数量private long coreSize;//超时时间private long timeout;//时间单位private TimeUnit timeUnit;//自定义拒绝策略private RejectPolicyRunnable rejectPolicy;public ThreadPool(int queueCapacity,long coreSize,long timeout,TimeUnit timeUnit){this.taskQueue new BlockQueue(queueCapacity);this.coreSize coreSize;this.timeout timeout;this.timeUnit timeUnit;this.rejectPolicy (queue, task) - {throw new RuntimeException();};}public ThreadPool(int queueCapacity,long coreSize,long timeout,TimeUnit timeUnit,RejectPolicyRunnable rejectPolicy){taskQueue new BlockQueue(queueCapacity);this.coreSize coreSize;this.timeout timeout;this.timeUnit timeUnit;this.rejectPolicy rejectPolicy;}//执行任务public void execute(Runnable task){//当任务数量尚未超过coreSizesynchronized (workers){if (workers.size() coreSize){log.info(创建工作线程{},task);Worker worker new Worker(task);workers.add(worker);worker.start();}else{log.info(加入到任务队列{},task);//有可能会阻塞在这里 进而将主线程阻塞掉//taskQueue.put(task);//这里会有很多种策略自定义策略//策略模式操作抽象成接口实现代码是传过来不会写死taskQueue.tryPut(rejectPolicy,task);//rejectPolicy.reject(taskQueue,task);}}}class Worker extends Thread{private Runnable task;public Worker(Runnable task){this.task task;}Overridepublic void run() {while (task ! null || (task taskQueue.poll(timeout,timeUnit)) ! null){try {log.info(正在执行...{},task);//执行任务task.run();}catch (Exception e){System.out.println(e.getMessage());}finally {//不要忘记这一步task null;}}synchronized (workers){log.info(worker被移除{},this);workers.remove(this);}}} }3.main测试 Slf4j public class TestPool {//阻塞队列是平衡生产者和消费者之间的中介//任务数量超过任务队列的情况public static void main(String[] args) {ThreadPool threadPool new ThreadPool(10, 2, 1000, TimeUnit.MICROSECONDS, (queue, task) - {//1.死等queue.put(task);//2.超时等待queue.offer(task, 1500, TimeUnit.MICROSECONDS);//3.调用者自己放弃// log.debug(放弃{},task);//4.调用者抛异常//throw new RuntimeException(task执行失败 task);//5.调用者自己执行task.run();});for (int i 0; i 20; i) {int j i;//主线程可能会在这里阻塞threadPool.execute(() - {try {Thread.sleep(30000);} catch (InterruptedException e) {throw new RuntimeException(e);}TestPool.log.debug({}, j);});}} }
http://www.hkea.cn/news/14415805/

相关文章:

  • p2p网站建设后期维护私人pk赛车网站怎么做
  • 如何做网站豆瓣厦门seo网络推广
  • 免费建站系统下载乐平网站
  • dw做的网站能搜到吗wordpress主题柚子皮zip
  • 兔展在线制作网站html网页制作总结
  • 榆林尚呈高端网站建设学院评估 网站建设整改
  • 品牌企业网站建设公司价格网站开发端口查询
  • 网站建设有哪些问题视频网站建站程序
  • 做照片视频的网站资讯型电商网站优缺点
  • 襄阳手机网站建设合肥房产网365
  • 织梦网站栏目江苏省建设执业资格中心网站
  • 网站开发 视频播放器wordpress 好用插件
  • 学校网站设计思路系统集成项目管理
  • windows 2003做网站如何知道wordpress
  • html网站免费模板开发公司移交给物业资料说明
  • 做英文网站怎么赚钱网站做流量的论坛贴吧
  • 建站公司网站 phpwind网站建议反馈应该怎么做
  • 廊坊哪里能够做网站微信公众号做电影网站要域名吗
  • 网站建设目的与作用织梦系统做的网站打开慢
  • 龙岗网站建设工程17网站一起做网店质量怎么样
  • 营销型网站的建设重点是什么做爰视频网站在线看
  • 福永网站优化网站开发策划
  • 电子商务网站建设 教案北京如何优化网站
  • 天津建设网站公司高港区拖拽式网页制作平台
  • 四川微信网站建设蓝海电商怎么做
  • 购物帮做特惠的导购网站成都公司注册流程及费用
  • 工程网站建设最新国际新闻热点
  • 网站建设伍际网络平板网站建设
  • 杭州网站公司哪家服务好wordpress ckplayer
  • 全国思政网站的建设情况智慧团建电脑版登录