ExecutorService和Executors在java中的区别是什么
发布时间: 2020-11-23 16:24:50
来源:亿速云
阅读: 91
作者: Leah
今天,我将讨论java中执行服务和执行服务的区别。 很多人可能不太了解,为了更好地了解,小编总结了以下内容。 我希望大家能通过这篇文章得到。
java中执行程序、执行程序和执行程序的区别
java.util.concurrent.Executor,Java.util.concurrent.executorservice, Java.util.concurrent.executors三者都是Java,创建和管理线程非常繁琐,而且操作系统通常有线程数量限制,因此每次请求时都不是创建线程线程池不仅可以提高APP应用程序的响应时间,还可以避免错误,如“内存错误Java.lang.out of 3360 unabletocreatenewnativethread”。
在Java 1.5中,开发人员需要关注线程池的创建和管理,但在Java 1.5或更高版本的执行程序框架中,可以创建固定的线程池、高速缓冲池(如果需要)和新的线程
执行程序
执行程序、执行程序和执行程序之间最大的区别是执行程序是抽象级别的核心接口。 大致代码如下。
公共接口执行程序{
运行命令(void execute );
}
与java.lang.Thread类将任务与执行相结合不同,Executor将任务本身与执行任务分开,然后阅读differencebetweenthreadandExecutor以了解thread与executor的区别
ExecutorService
ExecutorService接口提供了扩展Executor接口、返回、退出Future对象和关闭线程池等方法。 调用shutDown方法时,线程池将停止接受新任务,但正在pending的任务将完成。
Future对象提供异步执行。 也就是说,不需要等待任务执行完成。 可以提交要执行的任务,根据需要检查Future是否具有结果,如果任务完成,则可以通过Future.get )方法获得执行结果。 需要注意的是,Future.get ()方法是被阻止的方法,如果在调用时任务未完成,则等待任务执行完成。
ExecutorService.submit ()方法返回的Future对象还可以取消任务的执行。 Future提供了用于取消pending任务的cancel ()方法。
ExecutorService的部分代码如下:
publicinterfaceexecutorserviceextendsexecutor {
void shutdown (;
futuresubmit (可调用任务;
futuresubmit (运行任务,T result );
监听器任务(collection tasks,long timeout,timeunit ) throws InterruptedException;
}
执行程序
Executors是一个与Collections相似的工具类。 提供用于创建各种类型的线程池(如固定线程池和加速线程池)的工厂方法。
执行程序代码的一部分:
公共类执行程序{
publicstaticexecutorservicenewfixedthreadpool {
returnnewthreadpoolexecutor (nthreads,nthreads,0L,TimeUnit.MILLISECONDS,new LinkedBlockingQueue ) );
}
publicstaticexecutorservicenewcachedthreadpool (
returnnewthreadpoolexecutor(0,Integer.MAX_VALUE,60L,TimeUnit.SECONDS,new同步队列) );
}
}
让我们仔细看看三者之间的区别:
executorvsexecutorservicevsexecutors
如上所述,这三个都是执行程序框架的一部分。 Java开发人员需要学习和了解他们,才能更高效地使用Java提供的不同类型的线程池。 总结这三者的区别,让大家更好地理解:
执行程序和执行程序两个接口的主要区别是执行程序接口继承执行程序接口,是执行程序的子接口
Executor和ExecutorService的第二个区别是,Executor接口定义execute ()方法以接收Runnable接口中的对象,而ExecutorService接口
Executor和ExecutorService接口的第三个区别是,Executor的execute ()方法不返回任何结果,而ExecutorService的submit )方法是一个Future
Executor和ExecutorService接口的第四个区别是,它不仅允许客户端发送任务,还提供了ExecutorService控制线程池的方法。 例如,shutDown (调用方法退出线程池。 《Java Concurrency in Practice》本书提供了有关如何关闭线程池和处理pending任务的详细信息。
Executors类提供了用于创建不同类型线程池的工厂方法。 例如, newSingleThreadExecutor (创建只有一个线程的线程池,newfixedthreadpool (intnumofthreads )创建固定线程数的线程池,nenexedthreadpool
总结
下表说明了执行程序和执行服务之间的差异。
看了上面的内容,您对ExecutorService和Executors在java中的区别更了解吗? 如果想了解更多知识和相关内容,请关注亿速云行业的信息频道,感谢您的支持。