java中线程池的使用_Java中线程池的简单使用
什么是线程池?
顾名思义线程池就是线程的容器
举个例子:在没有共享电源的年代,车站有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中线程池的简单使用相关推荐
- java线程池怎么创建_java中的线程池,如何创建?
Java中的线程池它是线程的容器,或者(换句话说,它是具有执行任务能力的线程的集合). 我们可以使用ThreadPool框架来定位(或实现)线程池. 线程池可以包含多个线程.每当我们执行任何任务时,线 ...
- java count 在哪一类里_java 5线程中 Semaphore信号灯,CyclicBarrier类,CountDownLatch计数器以及Exchanger类使用...
先来讲解一下Semaphore信号灯的作用: 可以维护当前访问自身的线程个数,并提供了同步机制, 使用semaphore可以控制同时访问资源的线程个数 例如,实现一个文件允许的并发访问数. 请看下面的 ...
- java中线程的生命周期_Java中的线程生命周期– Java中的线程状态
java中线程的生命周期 Understanding Thread Life Cycle in Java and Thread States are very important when you a ...
- java公平索非公平锁_java中的非公平锁不怕有的线程一直得不到执行吗
首先来看公平锁和非公平锁,我们默认使用的锁是非公平锁,只有当我们显示设置为公平锁的情况下,才会使用公平锁,下面我们简单看一下公平锁的源码,如果等待队列中没有节点在等待,则占有锁,如果已经存在等待节点, ...
- Java如何解决mysql读写延迟_java中延迟任务的处理方式
1.利用延迟队列 延时队列,第一他是个队列,所以具有对列功能第二就是延时,这就是延时对列,功能也就是将任务放在该延时对列中,只有到了延时时刻才能从该延时对列中获取任务否则获取不到-- 应用场景比较多, ...
- java 线程池的使用_Java 使用线程池执行若干任务
在执行一系列带有IO操作(例如下载文件),且互不相关的异步任务时,采用多线程可以很极大的提高运行效率.线程池包含了一系列的线程,并且可以管理这些线程.例如:创建线程,销毁线程等.本文将介绍如何使用Ja ...
- java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...
一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...
- java中的case1怎么说_Java 中的 CAS 简述及原理解析
一.CAS 是什么? CAS(Compare And Swap),比较并交换,它是一条CPU并发原语.它的功能是判断内存某个位置的值是否为预期值,如果是则更新为新的值,这个过程是原子的.1 publi ...
- java中volatile关键字的含义_java中volatile关键字的含义
转自:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html 在java线程并发处理中,有一个关键字volatile的使用目前存 ...
最新文章
- 微信小程序模板template
- sysbench的安装和做性能测试
- 使用Helm 在容器服务k8s集群一键部署wordpress
- PC微信逆向:分析通用设置数组
- opengl加载显示3D模型nff类型文件
- mysql---mysql查看数据库操作记录
- SCN风波又起,2019年6月之前Oracle必须升级吗?
- python3 logging模块_python3中使用logging模块写日志,中文乱码,如何解决?
- 机器学习模型实战!如何从 900 万张图片中对 600 类照片进行分类? | 技术头条...
- BUUCTF:sqltest
- php读取json三级,php-流明从文件中读取JSON
- 数字孪生 智慧工厂可视化决策系统
- 科学怪人,半死僵尸和其他怪物
- fastica和pca区别_浅谈ICA算法的概念、本质和流程
- c语言中求奇数的简单代码
- Hi3515移动侦测技术的设计与实现
- export,sorce
- FastReID阅读笔记
- 照片模糊?辰哥手把手教你用Python让照片高清化
- 有关asd文件打开的问题
热门文章
- 思南民族中学2021年高考成绩查询,思南民族中学2019高考成绩喜报、一本二本上线人数情况...
- python中rstrip是什么意思_你真的了解strip()、lstrip()、rstrip()函数吗?
- VMware虚拟机通过物理机代理上网
- random随机数生成方法
- 关于DOM基础:DOM子节点:childNodes、父节点:parentNode以及相对父级元素进行定位的offsetParent
- IPv6地址的分类与使用
- 白话先验概率、后验概率以及极大似然估计
- BUUCTF闯关日记--[MRCTF2020]你传你呢(超详解)
- AA Certificatioin V11
- 2021年最新【阿里、头条、美团】【软件测试】面试题( 吐血整理 )