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

东莞品牌网站设计公司我们的网站

东莞品牌网站设计公司,我们的网站,苏州市住房和城乡建设局政务网站,wordpress什么是分页上一篇文章已经介绍了线程的基本概念以及线程相关的API#xff0c;下面来看一下线程池 一、线程池框架 1、线程池的优点 重用线程池中的线程#xff0c;避免因为线程的创建和销毁所带来的性能开销。 能有效控制线程池的最大并发数#xff0c;避免大量线程之间因互相抢夺系…上一篇文章已经介绍了线程的基本概念以及线程相关的API下面来看一下线程池 一、线程池框架 1、线程池的优点 重用线程池中的线程避免因为线程的创建和销毁所带来的性能开销。 能有效控制线程池的最大并发数避免大量线程之间因互相抢夺系统资源而导致的阻塞现象。 能够对线程进行简单的管理并提供定时执行以及指向间隔循环执行等功能。 2、JAVA中相关类 Executor是一个顶层接口它里面只声明了一个方法execute(Runnable) ExecutorService接口继承了Executor接口并且声明了一些方法submit、invokeAll、invokeAny以及shutDown等AbstractExecutorService实现了ExecutorService接口基本实现了ExecutorService中声明的所有方法 ThreadPoolExecutor接口继承了AbstractExecutorService这个类并且实现了这些重要方法execute() 、shutdown()、shutdownNow() Executors提供了大量的static方法来创建各种特性的线程池基于ThreadPoolExecutor的构造方法、大量的callable方法和创建ThreadFactory的方法 ThreadPoolExecutor的重要属性 private final BlockingQueueRunnable workQueue;//任务缓存队列用来存放等待执行的任务private final ReentrantLock mainLock new ReentrantLock();//线程池的主要状态锁对线程池状态比如线程池大小、runState等的改变都要使用这个锁private final HashSetWorker workers new HashSetWorker();//用来存放工作集private final Condition termination mainLock.newCondition();//private int largestPoolSize;//用来记录线程池中曾经出现过的最大线程数private long completedTaskCount;//用来记录已经执行完毕的任务个数private volatile ThreadFactory threadFactory;//线程工厂用来创建线程private volatile RejectedExecutionHandler handler;//任务拒绝策略private volatile long keepAliveTime;//线程存活时间 private volatile boolean allowCoreThreadTimeOut;//是否允许为核心线程设置存活时间private volatile int corePoolSize;//核心池的大小即线程池中的线程数目大于这个参数时提交的任务会被放进任务缓存队列private volatile int maximumPoolSize;//线程池最大能容忍的线程数private static final RejectedExecutionHandler defaultHandler new AbortPolicy();//默认的任务拒绝策略private static final RuntimePermission shutdownPerm new RuntimePermission(modifyThread); 这里要重点解释一下corePoolSize、maximumPoolSize、largestPoolSize三个变量。 corePoolSize在很多地方被翻译成核心池大小其实我的理解这个就是线程池的大小。举个简单的例子 假如有一个工厂工厂里面有10个工人每个工人同时只能做一件任务。 因此只要当10个工人中有工人是空闲的来了任务就分配给空闲的工人做 当10个工人都有任务在做时如果还来了任务就把任务进行排队等待 如果说新任务数目增长的速度远远大于工人做任务的速度那么此时工厂主管可能会想补救措施比如重新招4个临时工人进来 然后就将任务也分配给这4个临时工人做 如果说着14个工人做任务的速度还是不够此时工厂主管可能就要考虑不再接收新的任务或者抛弃前面的一些任务了。 当这14个工人当中有人空闲时而新任务增长的速度又比较缓慢工厂主管可能就考虑辞掉4个临时工了只保持原来的10个工人毕竟请额外的工人是要花钱的。 这个例子中的corePoolSize就是10而maximumPoolSize就是14104。 也就是说corePoolSize就是线程池大小maximumPoolSize在我看来是线程池的一种补救措施即任务量突然过大时的一种补救措施。 不过为了方便理解在本文后面还是将corePoolSize翻译成核心池大小。 largestPoolSize只是一个用来起记录作用的变量用来记录线程池中曾经有过的最大线程数目跟线程池的容量没有任何关系。 重要方法 execute public void execute(Runnable command) {if (command null)throw new NullPointerException();int c ctl.get();if (workerCountOf(c) corePoolSize) {if (addWorker(command, true))return;c ctl.get();}if (isRunning(c) workQueue.offer(command)) {int recheck ctl.get();if (! isRunning(recheck) remove(command))reject(command);else if (workerCountOf(recheck) 0)addWorker(null, false);}else if (!addWorker(command, false))reject(command);} 3、线程池的分类 newFixedThreadPool newWorkStealingPool newSingleThreadExecutor newCachedThreadPool newSingleThreadScheduledExecutor newScheduledThreadPool 重点是ThreadPoolExecutor的代码、还需要理解线程池状态、任务的执行、线程池中的线程初始化、任务缓存队列及排队策略、任务拒绝策略、线程池的关闭、线程池容量的动态调整 简单使用Demo package com.demo;import java.util.ArrayList; import java.util.Collection; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class ThreadPool { private int threadCount 10;private int threadpoolCount 3;public static void main(String[] args) {new ThreadPool().threadPoolControl();}public void threadPoolControl() { ThreadObject[] et new ThreadObject[threadCount]; ExecutorService service Executors.newFixedThreadPool(threadpoolCount);CollectionThreadObject c new ArrayListThreadObject();for (int i 0; i threadCount; i) { et[i] new ThreadObject(); c.add(et[i]);}try {service.invokeAll(c);service.shutdown();} catch (InterruptedException e) {e.printStackTrace();}}class ThreadObject implements CallableObject{ public Object call() throws Exception {System.out.println(当前线程Thread.currentThread().getName(),线程对象this);return null;}} }
http://www.zqtcl.cn/news/769950/

相关文章:

  • 教育培训机构排名seo是搜索引擎营销
  • 做奢侈品网站有哪些沧州手机建站哪家好
  • 德州网站网站建设广西房管局官网
  • 白石桥做网站公司seo顾问服务四川
  • 网站建设注册哪类商标十大网页设计公司
  • 网站建设的源代码有什么作用金华网站建设优化技术
  • 个人网站申请做瞹瞹嗳视频网站在线观看
  • 做网站 融资玉石网站建设的定位
  • 自己做的网站字体变成方框seo同行网站
  • 宁波网站建设培训微信小程序开发平台官网
  • 西部数码做的网站打不开哈尔滨模板建站推荐
  • 外贸网站建设流程杭州软件定制开发
  • 网站的首页面设计软文推广特点
  • 网站描述在哪里写网页设计图片怎么换
  • 深圳网站关键词优化推广做mod游戏下载网站
  • 通达oa 做网站wordpress动转换标签别名
  • 三亚学做网站培训招聘网站排名
  • 企业网站建设费用需要多少钱怎样下载建设银行信用卡网站
  • 厦门建网站公司怎么做服装外贸网站
  • 做淘宝客网站用什么程序好仿站下载工具
  • 网站地图开发国家住房和城乡建设部中国建造师网站
  • 巫山网站建设泉州市培训建设系统中心网站
  • 网站开发国内外研究背景室内设计师收入高吗
  • 深圳网站维护一般多少钱沈阳做网站黑酷科技
  • 汽车营销服务网站建设怎样申请微信公众号个人
  • 阿里云 做网站北京工程建设交易中心网站
  • 网站备案安全承诺书竞价外包推广专业公司
  • 如何做公司网站广西住建厅八大员报名网站
  • 以下不是网站开发语言的哪项工信部域名备案管理系统
  • 优化网站搭建创业项目网站建设规划