线程池
【摘要】 import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class Test { /** * * 1 我想看文档 Word word转换成Pdf存储 * 2 文档处理中,请稍后再试 */ public void oldHandle(St...
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Test {
/**
*
* 1 我想看文档 Word word转换成Pdf存储
* 2 文档处理中,请稍后再试
*/
public void oldHandle(String[] args) {
/**
* 使用循环模拟许多用户请求的场景
*/
for (int request = 0; request <=100; request++) {
new Thread(()-> {
System.out.println("文档处理开始!");
try {
/**
* 将Word转换成PDF格式:处理很长很长的耗时过程
*/
Thread.sleep(1000L*30);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("文档处理结束!");
} ).start();
}
}
/**
* 新的处理方式
* @param args
*/
public static void main(String[] args) {
/**
* 开启了一个线程池:线程个数是10个
*/
ExecutorService threadPool = Executors.newFixedThreadPool(10);
for (int request = 0; request <=100; request++) {
threadPool.execute(
()-> {
System.out.println("文档处理开始!");
try {
/**
* 将Word转换成PDF格式:处理很长很长的耗时过程
*/
Thread.sleep(1000L*30);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("文档处理结束!");
}
);
}
}
}
线程池简介
什么是线程池
线程池顾名思义就是事先创建若干个可执行的线程放入一个池(容器)中,需要的时候从池中
获取线程不用自行创建,使用完毕不需要销毁线程而是放回池中,从而减少创建和销毁线程对象
的开销。
线程池带来的好处
1、降低资源消耗
2、提高响应速度
3、提高线程的可管理性
面试题:简单线程池设计
面试官:
同学你好,你能独立设计出一个简单线程池吗?
池子 1、开启/初始化/关闭
2 、获取线程
3、归还线程
问题:创建多少
没有线程了,咋整
---------------------
升级版
直接提交任务 异步通知
-------------
中间过程省略 有一个任务 队列存任务 有一个执行器,
问题:
创建多少
满了,怎么办
数组要多长
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)