一.为什么要用线程池 1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。 2.可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大 约1MB内存,线程开的越多,消耗的内存也就越大,最后死机)。Java里面线程池的顶 ...
分类:
编程语言 时间:
2018-05-11 17:31:52
阅读次数:
220
不同连接池在大量线程需求的情况下都分配了多少线程 Executors.newCachedThreadPool(); 会有7万多个; Executors.newScheduledThreadPool(5); 一共会有10个 Executors.newSingleThreadExecutor(); 一共 ...
分类:
编程语言 时间:
2018-05-09 14:58:49
阅读次数:
151
一 . 概述 我们知道线程的创建代价是比较大的,因此我们也可以引入池的概念,帮助实现资源重用的概念. 二 . 线程池的基本使用 三 . 常用的线程池 CacheThreadPool : 带缓冲的线程池 fixThreadPool : 固定大小的线程池 Singloton : 单一线程的线程池. 四 ...
分类:
编程语言 时间:
2018-05-01 00:32:33
阅读次数:
205
Executors: CachedThreadPool 将为每个任务创建一个线程。 public class CachedThreadPool { public static void main(String[] args) { ExecutorService exec = Executors.ne ...
分类:
其他好文 时间:
2018-04-30 20:01:06
阅读次数:
162
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newS ...
分类:
编程语言 时间:
2018-04-30 17:57:24
阅读次数:
134
在实际开发过程中遇到的多线程情况不多,但是在生产环境中多线程是最基本的情况,java面试时也会考到,所以看看多线程的知识还是很有必要的。 Thread,Runnable,Callable,Future,FutureTask,Executors这是java常见的借口和类。 thread.run(),t ...
分类:
编程语言 时间:
2018-04-29 18:43:21
阅读次数:
158
java线程池 java线程池通过Executors工厂类初始化线程池 1. 创建大小不固定的线程池 使用ExecutorService es = Executors.newCachedThreadPool(); 生成大小不固定的线程池, es.excute(任务) 2. 生成线程大小固定的线程池 ...
分类:
编程语言 时间:
2018-04-27 23:56:21
阅读次数:
245
前言:相信大家都会使用Executors工具类创建线程池来使用线程,为什么并发编程会使得程序更快?那它的难点又在哪里?本文首先介绍何为并发编程。 一、并发编程 并发编程的目的是为了让程序运行得更快,但是,并不是启动更多的线程就能让程序最大限度地并发执行。在进行并发编程时,如果希望通过多线程执行任务让 ...
分类:
其他好文 时间:
2018-04-23 12:22:59
阅读次数:
130
说明:先上代码,笔记后续补充。public class ScheduleTest1 { private static long start; private static ScheduledExecutorService executorService = Executors.newSchedule ...
分类:
编程语言 时间:
2018-04-23 00:10:22
阅读次数:
173
NIO ------------ 1、传统IO 传统IO是阻塞模式,处理并发的时候,需要启动多个线程, cpu需要在多线程上下文之间进行频繁切换,而大多数线程通 常处于阻塞状态,导致CPU资源利用底下。 2、New IO 非阻塞,传统IO是阻塞模式,不需要启动大量线程,通常结合 线程池能够实现高并发... ...
分类:
编程语言 时间:
2018-04-22 21:43:50
阅读次数:
273