当前位置: 移动技术网 > IT编程>开发语言>Java > Java中Executor接口用法总结

Java中Executor接口用法总结

2019年07月22日  | 移动技术网IT编程  | 我要评论

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网