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

苏州网站建设品牌公司聊城专业网站设计公司

苏州网站建设品牌公司,聊城专业网站设计公司,无锡网站建设制作开发,上海知名的网站建设公司最近项目上有个需求#xff0c;需要从FTP服务器中下载大批量的数据文件#xff0c;然后解析该数据文件进行入库#xff0c;数据库为oracle#xff0c;最后在通过web工程#xff0c;以报表和图表的形式进行展现。这些批量的数据文件为纯文本文件#xff0c;每天产生数据文…最近项目上有个需求需要从FTP服务器中下载大批量的数据文件然后解析该数据文件进行入库数据库为oracle最后在通过web工程以报表和图表的形式进行展现。这些批量的数据文件为纯文本文件每天产生数据文件大概有1500个每个文件大概有500KB且随着时间的推移这些数据文件会逐渐增多。之前的实现方式是通过每天按时触发建立一个FTP连接使用这个连接读取文件读取一个下载一个。部署到生成环境后测试发现全部完成后需要7个小时如果文件随时间的增长显然是不能接受的。因此这里需要改成多线程来处理这样就可以缩短读取的时间这里做了个案例用来套用到修改的程序中案例代码如下实现代码package com.what21.thpool;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;import java.util.concurrent.ThreadPoolExecutor.AbortPolicy;public class ThreadPoolMain {/*** param args*/public static void main(String[] args) {//线程池维护线程的最少数量int corePoolSize  50;//线程池维护线程的最大数量int maximumPoolSize  Integer.MAX_VALUE;//线程池维护线程所允许的空闲时间long keepAliveTime  4;//线程池维护线程所允许的空闲时间的单位TimeUnit unit  TimeUnit.SECONDS;BlockingQueue taskQueue  new ArrayBlockingQueue(10);// AbortPolicy 策略// 处理程序遭到拒绝将抛出运行时RejectedExecutionExceptionAbortPolicy handler  new ThreadPoolExecutor.AbortPolicy();// 初始化线程池ThreadPoolExecutor threadPool  new ThreadPoolExecutor(corePoolSize, maximumPoolSize,keepAliveTime, unit, taskQueue, handler);// 线程池执行for(int i0;i1000;i){final int count  i;threadPool.execute(new Thread(new Runnable(){Overridepublic void run() {try {Thread.sleep(1*1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(count);}}));}}}执行流程描述1、线程池threadPool初始化时任务队列taskQueue中的线程为空线程池是不会马上执行的。2、当调用 线程池threadPool的execute()方法时添加一个线程线程池会做出如下的判断a、如果当前正在运行的线程数量小于corePoolSize就立即创建并执行这个线程b、如果当前正在运行的线程数量大于或等于corePoolSize新添加的线程会放入队列c、如果队列满了正在运行的线程数量小于 maximumPoolSize就继续创建线程运行这个任务d、如果队列满了正在运行的线程数量大于或等于 maximumPoolSize线程池threadPool会抛出不能接受新任务的异常。3、当一个线程完成任务时它会从队列taskQueue中取出一个任务来进行执行。4、当一个线程执行完毕时超过一定的时间keepAliveTime时线程池threadPool会判断如果当前池中运行的线程数大于corePoolSize那么这个线程就被停掉。线程池threadPool的所有任务完成后它最终会收缩到corePoolSize的大小。通过使用上述原理的多线程功能实现且每次都有50个线程并发执行测试后发现大大的降低了执行时间变成了2个多小时实践证明多线程就是好
http://www.pierceye.com/news/558782/

相关文章:

  • 德州做网站多少钱网站实现搜索功能
  • 帝国cms7.0网站搬家换域名换空间等安装教程万网云虚拟主机上传网站
  • 网站建设推广接单语wordpress 所有文章
  • 申请域名后怎么做网站网站建设与维护中国出版社
  • 洛阳做网站那家好课程网站建设开题报告
  • 到哪里建网站商务网站建设学期总结
  • 铜陵app网站做营销招聘网站开发公司需要投入什么资源
  • 建购物的网站需要多少钱wordpress不显示头像
  • 如何做一个个人网站长春网站建设wang
  • 湖南省做网站的网站资讯建设
  • 滨江网站建设制作如何建设网站方便后期维护
  • dedecms手机网站插件wordpress模板中文
  • 网站建设合同封面模板下载天津专业网站设计
  • 毕业设计网站做几个2345浏览器网页版
  • 南阳市网站建设国家建设协会工程质量分会网站
  • 苗木网站开发需求自己做网站转发新闻违法么
  • 招商网站建设解决方案wordpress页面转移
  • 门户网站开发方案文档做网站切片
  • 中国房地产新闻关键词seo排名优化如何
  • 网站大型网页游戏上海装修公司排名统帅
  • hostinger建站wordpress互联网营销方案策划
  • 门户网站维护方案杭州网站建设公司哪家好
  • 深泽网站建设在wordpress加入文件管理器
  • 国外社交网站建设福州市工程建设质量管理网站
  • 建设网站怎样分配给用户空间做网站优化有什么方法
  • 做计算机网站有哪些内容nodejs做网站容易被攻击吗
  • 咖啡店网站模板免费图表制作网站
  • 织梦瀑布流网站模板爱站网关键词
  • 网站运营需要什么条件网站建设开发公司微信公众号开发
  • 国外购买域名网站计算机网站建设论文总结