目录 一、简介 二、Executor 框架 三、ThreadPoolExecutor 四、Executors 参考资料 一、简介 什么是线程池 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。 为什么要用线程池 如果并发请求数量很多,但每个线程执行的时间很短 ...
分类:
编程语言 时间:
2020-01-16 14:18:56
阅读次数:
67
客户端负载均衡器:Rbbion Ribbon是一个客户端负载均衡器,可以让您对HTTP和TCP客户端的行为进行大量控制。 Feign已使用Ribbon,因此如果您使用的是@FeignClient,则此部分也适用。 Ribbon中的一个核心概念是指定客户端的概念.每个负载均衡器都是组件集成的一部分,这 ...
分类:
编程语言 时间:
2020-01-14 10:10:54
阅读次数:
100
简单介绍 线程池是池化技术的一种,对线程复用、资源回收、多任务执行有不错的实践。阅读源码,可以学习jdk的大师对于线程并发是怎么池化的,还有一些设计模式。同时,它也能给我们在使用它的时候多一种感知,出了什么问题可以马上意识到哪里的问题。 使用范例 我们使用一个线程池,直接通过jdk提供的工具类直接创 ...
分类:
编程语言 时间:
2020-01-12 18:26:01
阅读次数:
78
什么是线程池?为什么要用线程池? 1、降低资源的消耗。降低线程创建和销毁的资源消耗; 2、提高响应速度:线程的创建时间为T1,执行时间T2,销毁时间T3,免去T1和T3的时间 3、提高线程的可管理性。 实现一个我们自己的线程池 1、 线程必须在池子已经创建好了,并且可以保持住,要有容器保存多个线程; ...
分类:
编程语言 时间:
2020-01-08 22:44:59
阅读次数:
87
如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。这就是线程池的目的了。线程池为线程生命周期的开销和资源不足问题提供了解决方案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程池主要流程 用户通过submit提交一个任务 ...
分类:
编程语言 时间:
2020-01-06 21:17:28
阅读次数:
92
当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize时,如果还有任务到来就会采取任务拒绝策略,通常有以下四种策略: AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。 这是线程池默认的拒绝策略,在任务不能再提交的时候,抛出异 ...
分类:
编程语言 时间:
2020-01-04 16:58:58
阅读次数:
234
1 当一个任务通过submit或者execute方法提交到线程池的时候,如果当前池中线程数(包括闲置线程)小于coolPoolSize,则创建一个线程执行该任务。 2 如果当前池中线程数大于等于coolPoolSize,则将该任务加入到等待队列。 3 如果任务不能入队,说明等待队列已满,若当前池中线 ...
分类:
编程语言 时间:
2020-01-04 16:25:54
阅读次数:
112
工作中用过线程池来进行多线程的操作,但是也仅仅是停留在使用方面,没有深入研究,现在通过源码来仔细研究下java的线程池。关于线程池的优缺点就不研究了,直接通过一个源码来看看java中线程池的原理。 使用ThreadPoolExecutor来创建一个线程池 public class MultipleT ...
分类:
编程语言 时间:
2019-12-28 13:24:37
阅读次数:
86
package com.fgy.demo07; public class RunnableImpl implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getNam ...
分类:
编程语言 时间:
2019-12-27 23:52:27
阅读次数:
131
1、线程池常用接口介绍 1.1、Executor 执行提交的Runnable任务。其中的execute方法在将来的某个时候执行给定的任务,该任务可以在新线程、池化线程或调用线程中执行,具体由Executor的实现者决定。 1.2、ExecutorService ExecutorService继承自E ...
分类:
编程语言 时间:
2019-12-18 23:38:12
阅读次数:
92