欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

Java中Executor接口用法总结

时间:2020-11-08 12:58:04|栏目:JAVA代码|点击:

本文实例讲述了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程序设计有所帮助。

上一篇:浅谈Slf4j与其他日志系统兼容的使用方法

栏    目:JAVA代码

下一篇:java fastdfs客户端使用实例代码

本文标题:Java中Executor接口用法总结

本文地址:http://www.codeinn.net/misctech/20515.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有