Java中Executor接口用法总结
本文实例讲述了Java中Executor接口用法。分享给大家供大家参考。具体如下:
1.Java中Executor接口的定义
public interface Executor {
void execute(Runnable command);
}
2.Executors以下静态工厂方法创建一个线程池:
a) newFixedThreadPool:创建一个定长的线程池。达到最大线程数后,线程数不再增长。
如果一个线程由于非预期Exception而结束,线程池会补充一个新的线程。
b) newCachedThreadPool:创建一个可缓存的线程池。当池长度超过处理需求时,可以回收空闲的线程。
c) newSingleThreadPool:创建一个单线程executor。
d) newScheduledThreadPool:创建一个定长的线程池,而且支持定时的以及周期性的任务执行。
类似于Timer。但是,Timer是基于绝对时间,对系统时钟的改变是敏感的,而ScheduledThreadPoolExecutor只支持相对时间。
3.对比Timer类的应用总结
1) Timer是创建唯一的线程来执行所有的timer任务。如果一个任务超时了,会导致其他的TimerTask时间准确性出问题。
2) 如果TimerTask抛出uncheck 异常,Timer将会产生无法预料的行为。因此,ScheduledThreadPoolExecutor可以完全代替Timer。
3) 为了解决执行服务的生命周期问题,ExecutorService接口扩展了Executor。线程池将包括3个状态:running,shutting down,terminated。
4.Callable和Future
因为Runnable没有返回值,并且不能抛出checked异常,所以Callable是更佳的抽象。(Callable<Void>表示无返回值的任务)。
Future描述了任务的生命周期,并提供了相关的方法来获取任务的结果、取消任务以及检查任务完成或则是否取消。
5.CompletionService整合了Executor和BlockingQueue的功能。
其take和poll可以阻塞的获取完成的任务。
希望本文所述对大家的java程序设计有所帮助。
相关文章
Spring AOP如何自定义注解实现审计或日志记录(完整代码)
这篇文章主要介绍了Spring AOP如何自定义注解实现审计或日志记录(完整代码),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-12-12
idea 在springboot中使用lombok插件的方法
这篇文章主要介绍了idea 在springboot中使用lombok的相关资料,通过代码给大家介绍在pom.xml中引入依赖的方法,本文给大家介绍的非常详细,需要的朋友可以参考下2021-08-08
Java中的break和continue关键字的使用方法总结
下面小编就为大家带来一篇Java中的break和continue关键字的使用方法总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2016-11-11


最新评论