Java中多线程的使用(超级超级详细)线程池 7

什么是线程池?

线程池是一个容纳多个线程的容器,线程池中的线程可以重复使用,无需反复创建线程而消耗过多的资源

*使用多线程的好处:

1.降低消耗,减少了创建和销毁线程的次数,每个线程都可以重复利用,可执行多个任务

2.提高响应速度,任务可以不需要等到线程创建就可以立即执行

3.提高线程的可管理性,根据系统的承受能力,调整线程池中工作线程的数目,防止消耗过多的内存,导致服务器死机

线程池的使用

线程池的顶级接口是java.util.concurrent.Excetor,但是严格意义上来讲,Excutor并不是一个线程池,而只是一个执行线程的工具,真正的线程池接口是java.util.concurrent.ExceutorService,要配置一个线程池是比较复杂的,而且配置的线程池很可能不是最优的,因此java.util.cocurrent.Exceutors线程工程里提供了一些静态工厂,生成一些常用的线程池,官方建议使用Exceutors工程来创建线程池对象

创建线程池的方法

public static ExecutorService newFixedThreadPool(int nThreads) :返回线程池对象。(创建的是有界线 程池,也就是池中的线程个数可以指定最大数量)

获取到了一个线程池ExecutorService 对象,那么怎么使用呢,在这里定义了一个使用线程池对象的方法如下: public Future<?> submit(Runnable task) :获取线程池中的某一个线程对象,并执行

Future接口:用来记录线程任务执行完毕后产生的结果。线程池创建与使用。

使用线程池中线程对象的步骤

1.创建线程池对象

2.创建Runable接口子类对象

3.提交Runable接口的子类对象

4.关闭线程池

下面使用一段代码来操作一下下

package ThreadPool;
public class MyThread implements Runnable {
@Override
public void run() {
System.out.println("我要吃饭");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我吃饱了");
}
}
package ThreadPool;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main {
public static void main(String[] args) {
//创建线程池对象
ExecutorService executorService = Executors.newFixedThreadPool(2);
//创建Runable实例对象
MyThread myThread = new MyThread();
executorService.submit(myThread);
executorService.submit(myThread);
executorService.submit(myThread);
}
}

运行结果

以上就是线程池的一些基础知识,如有错误还请批评指正,喜欢我的可以点赞收藏,我会不定期跟新文章,可以关注我呀

最新文章

  1. 0421 &amp; SX2016
  2. 整理 PHPstorm实用个人配置,修改调整个性化快捷键,修改使用phpstorm创建的模板的默认注释:
  3. el表达式无法获取springmvc的model封装好的数据之解决方法
  4. BZOJ 1066 【SCOI2007】 蜥蜴
  5. zip解压缩
  6. LXNetwork – 基于AF3.0封装的iOS网络请求库
  7. CLR via C# - GC
  8. linux安装GraphicsMagick
  9. 数据库文件导入导出操作,以及赋予权限SQL语句
  10. java 与操作系统进程同步问题(一)————互斥问题
  11. 转:JAVA里面的int类型 和Integer类型,有什么不一样
  12. IDEA启动maven项目
  13. [python][cpp]对浮点数进行n位翻转
  14. java第四次上机
  15. pycharm 激活码及使用方式
  16. MySQL基础操作1
  17. WebSocket简单尝试
  18. Dubbo集群配置和官方文档
  19. 前端开发利器自定义Iconfont图标
  20. [转]Redis学习---Redis高可用技术解决方案总结

热门文章

  1. Paper templates for Word(Word论文模板)
  2. Day7-微信小程序实战-引入iconfont(充分利用iconfont图标库的资源)
  3. #Linux 下 Xampp的安装与Hello World
  4. 使用SpringCloud Stream结合rabbitMQ实现消息消费失败重发机制
  5. 如何修改git commit的author信息
  6. MySQL一招入门
  7. webpack入门进阶(1)
  8. js element类型的属性和方法整理
  9. 洛谷 P3592 [POI2015]MYJ
  10. Buy A Ticket(图论)