黑马程序员技术交流社区
标题:
四种常用线程池介绍
[打印本页]
作者:
小江哥
时间:
2018-5-18 11:02
标题:
四种常用线程池介绍
1、缓存型的
cachedThreadPool
特点:线程池无限大,当处理第二个线程时若第一个处理完,则会继续使用第一个线程,并且该线程池如果长度超过处理需要,可以收回空闲线程,反之,则新建线程
2、固定大小的
fixedThreadPool
特点:线程池大小固定,如果线程池大小为3,(也就是每次同时只能处理三个,超出三个之外的就需要等待)
3、任务型的
scheduledThreadPool
特点:当实现的是scheduleAtFixedRate或者schedule时,支持定时和周期性任务,如果实现的是execute的话则为普通线程池可自定义线程池大小
4、单线程线程池
singleThreadExecutor
特点:单线程的线程池,一次最大处理量为了,超过的需要等待,不能定义线程池大小
四种线程池的特点的演示代码如下:
package test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Thread_test {
static ExecutorService es = Executors.newCachedThreadPool();
//static ExecutorService es = Executors.newFixedThreadPool(3);
//static ExecutorService es = Executors.newScheduledThreadPool(3);
//static ExecutorService es = Executors.newSingleThreadExecutor();
public static void doTest() {
// (CachedThreadPool,FixedThreadPool)
es.execute(new Runnable() {
public void run() {
System.out.println("执行了--");
try {
Thread.sleep(2000);//线程休眠2秒
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
// (ScheduledThreadPool)
// ((ScheduledExecutorService) es).scheduleAtFixedRate(new Runnable() {
// int i=1;
// @Override
// public void run() {
//
// int time=3*i;
// System.out.println("距离第一次打印已经过了"+time+"秒");
// i++;
// }
// //}, 3, TimeUnit.SECONDS);//延迟三秒执行(定时执行的方法为schedule)
// }, 1, 3, TimeUnit.SECONDS);//每三秒执行一次
}
public static void main(String[] args) {
for (int i = 0; i < 12; i++) {
doTest();
}
}
}
众览群雄,唯我杭城独秀
——
一贴汇总杭州校区所有就业薪资
http://bbs.itheima.com/forum.php?mod=viewthread&tid=345570
[color=inherit !important]
一贴看杭州分校吃住行,学习生活攻略大集锦
http://bbs.itheima.com/thread-347847-1-1.html
全新图文杭州新校区来校路线图
:
http://bbs.itheima.com/thread-347847-1-1.html
作者:
Yin灬Yan
时间:
2018-5-18 13:14
我来占层楼啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2