什么是线程池?

顾名思义线程池就是线程的容器

举个例子:在没有共享电源的年代,车站有5个人手机都没电且都没有带电源,这五个人想要给手机充电只能去车站的售货亭各花100块钱买一个移动电源;但是现在共享电源出现了,假设车站现在一共有3个共享移动电源,那么其中三个人只需要花一块钱租共享移动电源充电,后面2个人等前面的人用完了,接着花1块钱租就可以了(这个例子的前提是这5个人都不赶时间的前提下)

这里的共享电源出租点就相当于线程池。

线程池可以用来干什么?

线程池就是用来管理线程的

在没有接触线程池之前,我们使用线程的时候就去创建一个线程,然后startup()就可以

假设,你现在有一个while n(n=10000)的循环,每一次循环都要启动一个线程去计算n的因数,这样频繁而且大量的创建线程,系统的效率会大幅下降,系统会很快奔溃。

线程池就可以帮助我们解决这个问题,他使线程可以重复使用,就是执行完一个任务线程不会被销毁,而是可以继续执行其他任务

java中的线程池如何使用?

// 创建一个容量为5的线程池

ExecutorService executorService = Executors.newFixedThreadPool(5);

// 向线程池提交一个任务(其实就是通过线程池来启动一个线程)

executorService.execute(new TestRunnable());

java中线程池的使用

java中有哪些线程池

Java通过Executors提供四种线程池,分别为:

newCachedThreadPool——创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool——创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool——创建一个定长线程池,支持定时及周期性任务执行。newSingleThreadExecutor——创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

参考:http://cuisuqiang.iteye.com/blog/2019372

总结

线程池的原理可参考:

http://www.importnew.com/19011.html

http://www.infoq.com/cn/articles/java-threadPool/

java中线程池的使用_Java中线程池的简单使用相关推荐

  1. java线程池怎么创建_java中的线程池,如何创建?

    Java中的线程池它是线程的容器,或者(换句话说,它是具有执行任务能力的线程的集合). 我们可以使用ThreadPool框架来定位(或实现)线程池. 线程池可以包含多个线程.每当我们执行任何任务时,线 ...

  2. java count 在哪一类里_java 5线程中 Semaphore信号灯,CyclicBarrier类,CountDownLatch计数器以及Exchanger类使用...

    先来讲解一下Semaphore信号灯的作用: 可以维护当前访问自身的线程个数,并提供了同步机制, 使用semaphore可以控制同时访问资源的线程个数 例如,实现一个文件允许的并发访问数. 请看下面的 ...

  3. java中线程的生命周期_Java中的线程生命周期– Java中的线程状态

    java中线程的生命周期 Understanding Thread Life Cycle in Java and Thread States are very important when you a ...

  4. java公平索非公平锁_java中的非公平锁不怕有的线程一直得不到执行吗

    首先来看公平锁和非公平锁,我们默认使用的锁是非公平锁,只有当我们显示设置为公平锁的情况下,才会使用公平锁,下面我们简单看一下公平锁的源码,如果等待队列中没有节点在等待,则占有锁,如果已经存在等待节点, ...

  5. Java如何解决mysql读写延迟_java中延迟任务的处理方式

    1.利用延迟队列 延时队列,第一他是个队列,所以具有对列功能第二就是延时,这就是延时对列,功能也就是将任务放在该延时对列中,只有到了延时时刻才能从该延时对列中获取任务否则获取不到-- 应用场景比较多, ...

  6. java 线程池的使用_Java 使用线程池执行若干任务

    在执行一系列带有IO操作(例如下载文件),且互不相关的异步任务时,采用多线程可以很极大的提高运行效率.线程池包含了一系列的线程,并且可以管理这些线程.例如:创建线程,销毁线程等.本文将介绍如何使用Ja ...

  7. java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...

    一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...

  8. java中的case1怎么说_Java 中的 CAS 简述及原理解析

    一.CAS 是什么? CAS(Compare And Swap),比较并交换,它是一条CPU并发原语.它的功能是判断内存某个位置的值是否为预期值,如果是则更新为新的值,这个过程是原子的.1 publi ...

  9. java中volatile关键字的含义_java中volatile关键字的含义

    转自:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html 在java线程并发处理中,有一个关键字volatile的使用目前存 ...

最新文章

  1. 微信小程序模板template
  2. sysbench的安装和做性能测试
  3. 使用Helm 在容器服务k8s集群一键部署wordpress
  4. PC微信逆向:分析通用设置数组
  5. opengl加载显示3D模型nff类型文件
  6. mysql---mysql查看数据库操作记录
  7. SCN风波又起,2019年6月之前Oracle必须升级吗?
  8. python3 logging模块_python3中使用logging模块写日志,中文乱码,如何解决?
  9. 机器学习模型实战!如何从 900 万张图片中对 600 类照片进行分类? | 技术头条...
  10. BUUCTF:sqltest
  11. php读取json三级,php-流明从文件中读取JSON
  12. 数字孪生 智慧工厂可视化决策系统
  13. 科学怪人,半死僵尸和其他怪物
  14. fastica和pca区别_浅谈ICA算法的概念、本质和流程
  15. c语言中求奇数的简单代码
  16. Hi3515移动侦测技术的设计与实现
  17. export,sorce
  18. FastReID阅读笔记
  19. 照片模糊?辰哥手把手教你用Python让照片高清化
  20. 有关asd文件打开的问题

热门文章

  1. 思南民族中学2021年高考成绩查询,思南民族中学2019高考成绩喜报、一本二本上线人数情况...
  2. python中rstrip是什么意思_你真的了解strip()、lstrip()、rstrip()函数吗?
  3. VMware虚拟机通过物理机代理上网
  4. random随机数生成方法
  5. 关于DOM基础:DOM子节点:childNodes、父节点:parentNode以及相对父级元素进行定位的offsetParent
  6. IPv6地址的分类与使用
  7. 白话先验概率、后验概率以及极大似然估计
  8. BUUCTF闯关日记--[MRCTF2020]你传你呢(超详解)
  9. AA Certificatioin V11
  10. 2021年最新【阿里、头条、美团】【软件测试】面试题( 吐血整理 )