线程池(3)-参数-实现ThreadFactory】的更多相关文章

1.介绍 ThreadFactory用来创建线程,需要实现newThread方法. 2.常用场景 线程重命名 设置守护进程 设置优先级 3.示例(线程重命名) public class ThreadFactoryCreateNewThread { static class MyThreadFactory implements ThreadFactory { private AtomicInteger atomicInteger = new AtomicInteger(); @Override p…
线程池ThreadPoolExecutor参数设置 JDK1.5中引入了强大的concurrent包,其中最常用的莫过了线程池的实现ThreadPoolExecutor,它给我们带来了极大的方便,但同时,对于该线程池不恰当的设置也可能使其效率并不能达到预期的效果,甚至仅相当于或低于单线程的效率. ThreadPoolExecutor类可设置的参数主要有: corePoolSize 核心线程数,核心线程会一直存活,即使没有任务需要处理.当线程数小于核心线程数时,即使现有的线程空闲,线程池也会优先创…
版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.ThreadFactory概述以及源码分析 ThreadFactory很简单,就是一个线程工厂也就是负责生产线程的,我们看下ThreadFactory源码; public interface ThreadFactory { /** * Constructs a new {@code Thread}. Implementations may also initialize * priority, name, daemon status, {@…
在ThreadPoolExecutor类中有4个构造函数,最终调用的是如下函数: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) 构造函数一共有7个参…
构造函数 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) 参数 corePoolSize: 指定了线程池中的线程数量. maximumPoolSize: 指定了线程池中的最…
概要 (一) ThreadFactory 线程池中的ThreadFactory是一个线程工厂,线程池创建线程都是通过线程工厂对象(threadFactory)来完成的. 类图如下: 上面所说的threadFactory对象,是通过 Executors.defaultThreadFactory()返回的.Executors.java中的defaultThreadFactory()源码如下: public static ThreadFactory defaultThreadFactory() { r…
1.介绍 当线程池线程数大于最大线程数(maximumPoolSize)时,多余的任务,程序应该按照什么拒绝策略处理. 2.拒绝策略4个 AbortPolicy:丢弃任务,并抛出RejectedExecutionException异常(需要在调用线程处捕获异常,即执行submit线程处) DiscardPolicy:丢弃任务,不抛出异常 DiscardOldestPolicy:丢弃等待队列最前面任务 CallerRunsPolicy:由调用线程处理该任务 3.示例 3.1.AbortPolicy…
概述 比如去火车站买票, 有7个(maximumPoolSize)售票窗口, 但只有3个(corePoolSize)窗口对外开放.那么对外开放的3个窗口称为核心线程数, 而最大线程数是7个窗口. 如果3个窗口都被占用, 那么后来的人就必须在售票厅(SynchronousQueue.LinkedBlockingQueue或者ArrayBlockingQueue)排队. 但后来售票厅人越来越多, 已经人满为患, 就类似于线程队列已满.这时候火车站站长下令, 把剩下的4个窗口也打开, 也就是目前已经有…
多线程问题: 1.java中为什么要使用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影像,同时进行,这样,充分利用了cpu资源. 2.java中简单的实现多线程的方式 继承Thread类,重写run方法; class MyTread extends Thread{ public void run() { System.out.println(Thread.currentThread().getName()); } } 实现Runable接口,实现run方法: cl…
官方文档: https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html 1.简介 public class ThreadPoolExecutor extends AbstractExecutorService An ExecutorService that executes each submitted task using one of possibly several poole…