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

福建建筑人才网官方网站与做网站的人怎么谈判

福建建筑人才网官方网站,与做网站的人怎么谈判,免费版crm系统,黑龙江省转载来自#xff1a;http://blog.csdn.net/zhouhl_cn/article/details/7392607 和http://www.cnblogs.com/dolphin0520/p/3932921.html JDK1.5中引入了强大的concurrent包#xff0c;其中最常用的莫过了线程池的实现ThreadPoolExecutor#xff0c;它给我们带来了极大的方便http://blog.csdn.net/zhouhl_cn/article/details/7392607 和http://www.cnblogs.com/dolphin0520/p/3932921.html JDK1.5中引入了强大的concurrent包其中最常用的莫过了线程池的实现ThreadPoolExecutor它给我们带来了极大的方便但同时对于该线程池不恰当的设置也可能使其效率并不能达到预期的效果甚至仅相当于或低于单线程的效率。 ThreadPoolExecutor类可设置的参数主要有 corePoolSize 在创建了线程池后默认情况下线程池中并没有任何线程而是等待有任务到来才创建线程去执行任务除非调用了prestartAllCoreThreads()或者prestartCoreThread()方法从这2个方法的名字就可以看出是预创建线程的意思即在没有任务到来之前就创建corePoolSize个线程或者一个线程。 默认情况下在创建了线程池后线程池中的线程数为0当有任务来之后就会创建一个线程去执行任务当线程池中的线程数目达到corePoolSize后就会把到达的任务放到缓存队列当中。核心线程在allowCoreThreadTimeout被设置为true时会超时退出默认情况下不会退出。 maxPoolSize当线程数大于或等于核心线程且任务队列已满时线程池会创建新的线程直到线程数量达到maxPoolSize。如果线程数已等于maxPoolSize且任务队列已满则已超出线程池的处理能力线程池会拒绝处理任务而抛出异常。 keepAliveTime 当线程空闲时间达到keepAliveTime该线程会退出直到线程数量等于corePoolSize。如果allowCoreThreadTimeout设置为true则所有线程均会退出直到线程数量为0。 allowCoreThreadTimeout 是否允许核心线程空闲退出默认值为false。 queueCapacity 任务队列容量。从maxPoolSize的描述上可以看出任务队列的容量会影响到线程的变化因此任务队列的长度也需要恰当的设置。 还有就是 workQueue一个阻塞队列用来存储等待执行的任务这个参数的选择也很重要会对线程池的运行过程产生重大影响一般来说这里的阻塞队列有以下几种选择 ArrayBlockingQueue; LinkedBlockingQueue; SynchronousQueue; PriorityBlockingQueue  ArrayBlockingQueue和PriorityBlockingQueue使用较少一般使用LinkedBlockingQueue和Synchronous。线程池的排队策略与BlockingQueue有关。 threadFactory线程工厂主要用来创建线程handler表示当拒绝处理任务时的策略有以下四种取值 ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。 ThreadPoolExecutor.DiscardPolicy也是丢弃任务但是不抛出异常。 ThreadPoolExecutor.DiscardOldestPolicy丢弃队列最前面的任务然后重新尝试执行任务重复此过程 ThreadPoolExecutor.CallerRunsPolicy由调用线程处理该任务 线程池按以下行为执行任务 当线程数小于核心线程数时创建线程。当线程数大于等于核心线程数且任务队列未满时将任务放入任务队列。当线程数大于等于核心线程数且任务队列已满 若线程数小于最大线程数创建线程若线程数等于最大线程数抛出异常拒绝任务系统负载 参数的设置跟系统的负载有直接的关系下面为系统负载的相关参数 tasks每秒需要处理的最大任务数量tasktime处理第个任务所需要的时间responsetime系统允许任务最大的响应时间比如每个任务的响应时间不得超过2秒。 参数设置 corePoolSize: 每个任务需要tasktime秒处理则每个线程每钞可处理1/tasktime个任务。系统每秒有tasks个任务需要处理则需要的线程数为tasks/(1/tasktime)即tasks*tasktime个线程数。假设系统每秒任务数为100~1000每个任务耗时0.1秒则需要100*0.1至1000*0.1即10~100个线程。那么corePoolSize应该设置为大于10具体数字最好根据8020原则即80%情况下系统每秒任务数若系统80%的情况下第秒任务数小于200最多时为1000则corePoolSize可设置为20。 queueCapacity: 任务队列的长度要根据核心线程数以及系统对任务响应时间的要求有关。队列长度可以设置为(corePoolSize/tasktime)*responsetime (20/0.1)*2400即队列长度可设置为400。 队列长度设置过大会导致任务响应时间过长切忌以下写法 LinkedBlockingQueue queue new LinkedBlockingQueue(); 这实际上是将队列长度设置为Integer.MAX_VALUE将会导致线程数量永远为corePoolSize再也不会增加当任务数量陡增时任务响应时间也将随之陡增。 maxPoolSize: 当系统负载达到最大值时核心线程数已无法按时处理完所有任务这时就需要增加线程。每秒200个任务需要20个线程那么当每秒达到1000个任务时则需要(1000-queueCapacity)*(20/200)即60个线程可将maxPoolSize设置为60。 keepAliveTime: 线程数量只增加不减少也不行。当负载降低时可减少线程数量如果一个线程空闲时间达到keepAliveTiime该线程就退出。默认情况下线程池最少会保持corePoolSize个线程。 allowCoreThreadTimeout: 默认情况下核心线程不会退出可通过将该参数设置为true让核心线程也退出。 以上关于线程数量的计算并没有考虑CPU的情况。若结合CPU的情况比如当线程数量达到50时CPU达到100%则将maxPoolSize设置为60也不合适此时若系统负载长时间维持在每秒1000个任务则超出线程池处理能力应设法降低每个任务的处理时间(tasktime)。 转载于:https://www.cnblogs.com/duende99/p/11488569.html
http://wiki.neutronadmin.com/news/126216/

相关文章:

  • 有没有帮人做数学题的网站wordpress如何设置支付
  • 北京建设高端网站的百度做网站要多长时间
  • 西安有哪些网站建设公司查询企业的app哪个好
  • wordpress建小说网站自己做视频网站怎么让加载速度变快
  • 公司网站建设文案协会类网站免费模板
  • 企业网站建设主要包括哪些内容做的好的网站
  • 温州网站建设定制从化市网站建设
  • 网站编辑知识洛阳市建设工程安全监督网站
  • 关于未备案网站重庆物流最新消息
  • 广州网站建设哪家公司好做标书有什么好的网站吗
  • 网站开发周期网站建设优化解析
  • 我想做京东网站淘宝怎么做百度seo文章
  • 做网站运营需要有什么能力网站代码模板编写
  • 购物网站建设思维导构图鲜花团购网站建设
  • 新闻写作网站如何实现wordpress怎文章id连续
  • 网站开发培训北京上海阿里巴巴做网站
  • 拍卖网站建设公司wordpress 拖拽排序
  • 点餐网站模板 手机端广州网站优
  • 南宁网站建设培训wordpress调二级分类目录
  • 我的家乡网站建设知乎营销平台
  • 企业网站制作报价表驻马店做网站建设的公司
  • 个人网站建设咨询电话网站技术
  • 永久免费的网站服务器有哪些平台网站原型图展示
  • 网站源码爬取工具做网站都要学什么
  • 耒阳市做网站的广州网站优化网站建设
  • html5video网站wordpress照片主题
  • 绵阳网站网站建设小工具文本wordpress
  • 东莞网站建设和制作国内做分销比较好的平台
  • 做相片软件网站网站开发宣传方法
  • 网站开发背景策划书久久租房网