一、基础篇 1.线程池的参数 1> CorePoolSize 核心线程数 2> MaxPoolSize 最大线程数 3> QueueCapacity 队列容量 4> KeepAliveSecond 没有任务存活时间 5> TimeUnit 时间单位 6> rejectedExecutionHandl ...
分类:
其他好文 时间:
2020-06-05 23:23:52
阅读次数:
101
逻辑核心数 一般百度如何获取电脑的逻辑核心数,都会出现这段代码: Runtime.getRuntime().availableProcessors() 然而,问题在于Runtime.getRuntime().availableProcessors()也并非都能返回你所期望的数值。比如说,在我的双核1 ...
分类:
编程语言 时间:
2020-06-02 13:08:35
阅读次数:
68
高性能Java-集合 发表于 2019-01-12 | 阅读次数 132 前言 集合是我们在编写代码过程中常用的数据类型。在Java中,常用的集合类型有List、Map和Set。本文将对一些常用的集合类型的特点进行分析,并针对一些会影响性能的注意事项进行说明。 1. 集合类型 1.1 List 1. ...
分类:
编程语言 时间:
2020-06-02 09:28:40
阅读次数:
85
在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内 存资源或者其它更多资源。在 Java 中更是如此,虚拟机将试图跟踪每一个对象, 以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽 可能减少创建和销毁对象的次数,特别是一些很耗资源的对象创建和销毁,这就 是” ...
分类:
编程语言 时间:
2020-06-01 14:11:56
阅读次数:
81
前言 上一篇内容写了Java中线程池的实现原理及源码分析,说好的是实实在在的大满足,想通过一篇文章让大家对线程池有个透彻的了解,但是文章写完总觉得还缺点什么? 上篇文章只提到线程提交的execute()方法,并没有讲解线程提交的submit()方法,submit()有一个返回值,可以获取线程执行的结 ...
分类:
编程语言 时间:
2020-06-01 10:30:31
阅读次数:
104
一、线程池概念 1.1 线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。 1.2 我们详细的解释一下为什么要使用线程池? 在java中,如果每个请求到达就创建一个新线程,开销是相当大的。在实际使用中,创建和销毁线程花费的时 ...
分类:
编程语言 时间:
2020-05-31 19:57:50
阅读次数:
54
by 豆豆 大家都知道当任务过多,任务量过大时如果想提高效率的一个最简单的方法就是用多线程去处理,比如爬取上万个网页中的特定数据,以及将爬取数据和清洗数据的工作交给不同的线程去处理,也就是生产者消费者模式,都是典型的多线程使用场景。 那是不是意味着线程数量越多,程序的执行效率就越快呢。 显然不是。线 ...
分类:
编程语言 时间:
2020-05-31 16:10:26
阅读次数:
63
简单的线程池,体现线程的复用 不使用Executors.newFixedThreadPool(int)、Executors.newSingleThreadExecutor()、Executors.newCachedThreadPool(),而是通过ThreadPoolExecutor的7个参数的构造 ...
分类:
编程语言 时间:
2020-05-31 12:58:37
阅读次数:
51
通常线程是:有一个请求然后会创建对应的线程;执行完之后再回收。等待下次请求。 这样不断的创建线程再销毁线程是一种资源浪费,而且也不能无限制的创建线程。所以我们要学会复用线程(线程池)。 Java提供的线程池: ExecutorService 通过实现这个接口可以达到线程池的管理。 runnable ...
分类:
编程语言 时间:
2020-05-30 19:39:59
阅读次数:
63