西安市免费做网站,seo学校培训,互动创意网站,网站系统升级需要多久线程池介绍
降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时#xff0c;任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源#xff0c;如果无限制的创建#xff0c;不仅会消耗系统资源#…线程池介绍
降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源如果无限制的创建不仅会消耗系统资源还会降低系统的稳定性使用线程池可以进行统一的分配调优和监控。
线程池创建的两种方式
ThreadPoolExecutor类创建 /*** 用给定的初始参数创建一个新的ThreadPoolExecutor。*/public ThreadPoolExecutor(int corePoolSize,//线程池的核心线程数量int maximumPoolSize,//线程池的最大线程数long keepAliveTime,//当线程数大于核心线程数时多余的空闲线程存活的最长时间TimeUnit unit,//时间单位BlockingQueueRunnable workQueue,//任务队列用来储存等待执行任务的队列ThreadFactory threadFactory,//线程工厂用来创建线程一般默认即可RejectedExecutionHandler handler//拒绝策略当提交的任务过多而不能及时处理时我们可以定制策略来处理任务) {if (corePoolSize 0 ||maximumPoolSize 0 ||maximumPoolSize corePoolSize ||keepAliveTime 0)throw new IllegalArgumentException();if (workQueue null || threadFactory null || handler null)throw new NullPointerException();this.corePoolSize corePoolSize;this.maximumPoolSize maximumPoolSize;this.workQueue workQueue;this.keepAliveTime unit.toNanos(keepAliveTime);this.threadFactory threadFactory;this.handler handler;}简要说说我的理解其中创建一个实例对象通常有以下4中构造方法我们通常需要指定的是
corePoolSize指定线程池核心线程数。maximumPoolSize线程池最大线程数。和核心线程区别后面会讲keepAliveTime非核心线程执行完某一任务后任务队列中没有要执行的任务分配给改线程该线程不会立即销毁而是会等待直到等待的时间超过了 keepAliveTime才会被回收销毁。TimeUnit顾名思义时间单位。workQueue任务队列是阻塞式的用来存储待执行的任务。建议使用ArrayBlockingQueue指定其大小防止队列无限存储产生OOM。threadFactoryexecutor 创建新线程的时候会用到。handler饱和策略。