在没有看不论什么代码之前首先想一下线程池应该有哪几部分: 任务队列线程 任务队列非常好办,直接用堵塞队列就能够了:BlockingQueue<Runnable> workQueue。而线程是用来运行任务的,那么理所当然应该是不断地从任务队列中取出任务来运行,我们来看ThreadPoolExecuto ...
分类:
编程语言 时间:
2017-06-05 16:41:33
阅读次数:
180
shutdownvoid shutdown()启动一次顺序关闭,执行以前提交的任务,但不接受新任务。若已经关闭,则调用没有其他作用。抛出:SecurityException - 如果安全管理器存在并且关闭,此 ExecutorService 可能操作某些不允许调用者修改的线程(因为它没有保持Runt ...
分类:
编程语言 时间:
2017-06-03 18:12:34
阅读次数:
3575
1.降低了创建和销毁线程的次数。每一个工作线程都能够被反复利用。可运行多个任务。 2.能够依据系统的承受能力,调整线程池中工作线线程的数目。防止由于消耗过多的内存。而把server累趴下(每一个线程须要大约1MB内存。线程开的越多,消耗的内存也就越大,最后死机)。 Java里面线程池的顶级接口是Ex ...
分类:
编程语言 时间:
2017-05-31 11:58:59
阅读次数:
177
Java线程池使用说明 一简介 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为 ...
分类:
编程语言 时间:
2017-05-30 19:46:28
阅读次数:
297
去美团面试,问到了什么是线程池,如何使用,为什么要用,以下做个总结 1、什么是线程池: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁 ...
分类:
编程语言 时间:
2017-05-30 17:47:29
阅读次数:
163
线程池的实现 组成 一个比较简单的线程池至少应包括 线程池管理器:创建、销毁并管理线程池,将工作线程放入线程池中; 工作线程:一个可以循环执行任务的线程,在没有任务时进行等待; 任务队列:提供一种缓冲机制,将没有处理的任务放在任务队列中; 任务接口:每个任务必须实现的接口,主要用来规定任务的入口、任 ...
分类:
编程语言 时间:
2017-05-29 15:20:23
阅读次数:
161
CachedThreadPool会创建一个缓存区,将初始化的线程缓存起来。会终止并且从缓存中移除已有60秒未被使用的线程。 如果线程有可用的,就使用之前创建好的线程, 如果线程没有可用的,就新创建线程。 任务是交替执行的 重用:缓存型池子,先查看池中有没有以前建立的线程,如果有,就reuse;如果没 ...
分类:
编程语言 时间:
2017-05-28 14:23:54
阅读次数:
232
这几天主要是狂看源程序,在弥补了一些曾经知识空白的同一时候,也学会了不少新的知识(比方 NIO)。或者称为新技术吧。 线程池就是当中之中的一个,一提到线程。我们会想到曾经《操作系统》的生产者与消费者。信号量,同步控制等等。 一提到池。我们会想到数据库连接池。可是线程池又怎样呢? 建议:在阅读本文前, ...
分类:
编程语言 时间:
2017-05-27 20:42:28
阅读次数:
255
在没有看不论什么代码之前首先想一下线程池应该有哪几部分: 任务队列线程 任务队列非常好办。直接用堵塞队列就能够了:BlockingQueue<Runnable> workQueue。而线程是用来运行任务的,那么理所当然应该是不断地从任务队列中取出任务来运行,我们来看ThreadPoolExecuto ...
分类:
编程语言 时间:
2017-05-25 23:29:55
阅读次数:
220
线程池的好处 1. 降低资源的消耗 通过重复利用已创建的线程降低线程创建和销毁所造成的消耗 2. 提高响应速度 当任务到达时,任务可以不需要等到线程创建就能立即执行 3. 提高线程的可管理型 线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优 ...
分类:
编程语言 时间:
2017-05-23 22:37:07
阅读次数:
191