博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程-Executor,Executors,ExecutorService,ScheduledExecutorService,AbstractExecutorService
阅读量:6931 次
发布时间:2019-06-27

本文共 946 字,大约阅读时间需要 3 分钟。

引用

系统启动一个新线程的成本是比较高的,因为涉及与操作系统交互。使用线程池可以很好地提高性能,尤其是当程序中需要创建大量生存期很短的线程时,更应该考虑使用线程池。线程池在系统启动时即创建大量空闲的线程,程序将一个Runnable对象 或Callable对象传给线程池,线程池就会启动一个线程来执行它们的run()或call()方法,当run()或call()方法执行结束后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个Runnable对象的run()或call()方法。

线程池也可以有效控制系统中并发线程的数量,当系统中包含大量并发线程时,会导致系统性能剧烈下降,甚至导致JVM崩溃,而线程池的最大线程数参数可以控制系统中并发线程数不超过此数。

Java5线程池

Java5内建线程池,新增了Executors工厂类来产生线程池,该工厂类包含如下几个静态工厂方法来创建线程池。

ExecutorService newCachedThreadPool() 创建一个具有缓冲功能的线程池

ExecutorService newFixedThreadPool(int n) 创建一个可重用的,具有固定线程数的线程池

ExecutorService newSingleThreadExecutor() 创建一个只有单线程的线程池,与newFixedThreadPool(1)相同

ScheduledExecutorService newScheduledThreadPool(int corePoolSize) 创建一个具有指定线程数的线程池,它可以在指定延迟后执行线程任务。

ScheduledExecutorService newSingleThreadScheduledExecutor() 创建只有一个线程数的线程池,它可以在指定延迟后执行线程任务。

ExecutorService 代表尽快执行线程的线程池(只要线程池中有空闲的线程池,就立刻执行线程任务)。

ScheduledExecutorService 代表可在指定延迟后或周期性地执行线程任务的线程池。

转载于:https://www.cnblogs.com/lujiango/p/7581054.html

你可能感兴趣的文章
使用Maven创建一个Spring MVC Web 项目
查看>>
使用Redis模拟简单分布式锁,解决单点故障的问题
查看>>
[笔记]linux磁盘管理
查看>>
error C2065: 'theApp' : undeclared identifier
查看>>
linux中的颜色控制
查看>>
[SOJ #48]集合对称差卷积
查看>>
[bzoj3156]防御准备
查看>>
POJ-2792-集合加法
查看>>
验证的概述
查看>>
关于网页安全输出隐藏
查看>>
javascript内存泄漏
查看>>
Maya批量传递UV插件
查看>>
windows 地址空间分配
查看>>
install Maven
查看>>
android Thread和Service的区别
查看>>
前端交流会
查看>>
ASP.NET Boilerplate 邮件类使用
查看>>
C++实现快速排序
查看>>
C# 把一个文件夹下所有文件删除
查看>>
九度 1365 贝多芬第九交响曲
查看>>