看看它刚刚说的javadocsFuturesubmit(Runnabletask,Tresult)SubmitsaRunnabletaskforexecutionandreturnsaFuturerepresentingthattask.TheFuture'sgetmethodwillreturnthegivenresultuponsuccessfulcompletion.Parameters:task-thetasktosubmitresult-theresulttoreturn但是它对结果有什么影响呢?它在那里存储任何东西吗?它只是使用结果的类型来指定Future的类型吗??
我用Executors.newFixedThreadPool(2)创建了一个固定大小的线程池,并执行了10个Runnable对象。我设置断点并跟踪执行。但是,即使所有任务都已完成,fixedSizeThreadPool.awaitTermination()也不允许我继续。基本上:ExecutorServicefixedThreadPool=Executors.newFixedThreadPool(2);for(inti=0;i但这总是卡在awaitTermination上。怎么了? 最佳答案 正如彼得指出的那样,必须首先调用shut
我有一个关于ExecutorService如何在Java中工作的基本问题。很难看出简单地创建Threads以并行执行某些任务和将每个任务分配给ThreadPool之间的区别。ExecutorService看起来也非常简单高效,所以我想知道为什么我们不一直使用它。这只是一种方式比另一种更快地执行其工作的问题吗?这里有两个非常简单的例子来说明这两种方式之间的区别:使用执行器服务:HelloWorld(任务)staticclassHelloTaskimplementsRunnable{Stringmsg;publicHelloTask(Stringmsg){this.msg=msg;}pub
我向Java中的executorservice提交了一堆作业,但我想暂时暂停所有这些作业。最好的方法是什么?我该如何恢复?还是我这样做完全错了?我是否应该遵循其他模式来实现我想要实现的目标(即暂停/恢复执行服务的能力)? 最佳答案 为了回答我自己的问题,我在ThreadPoolExecutoritself的javadocs中找到了一个PausableThreadPoolExecutor的示例。.这是我使用Guava的监视器的版本:importcom.google.common.util.concurrent.Monitor;impo
在我的webapp中,我创建了一个使用ExecutorService和固定大小的ThreadPool的服务。我在整个应用程序生命周期内重复使用相同的ExecutorService。privatestaticExecutorServicepool=Executors.newFixedThreadPool(8);所有都在Tomcat中运行,关闭时出现以下错误:appearstohavestartedathreadnamed[pool-1-thread-1]buthasfailedtostopit.Thisisverylikelytocreateamemoryleak.我确实意识到在关闭to
TL:DRExecutorServiceexecutorService=Executors.newFixedThreadPool(8);在调试中运行并发,但在正常运行时它开始并发,但后来在单线程中运行。我有一些代码可以在ExecutorService中启动4个不同的任务.其中两个任务应该几乎立即完成,另外两个应该运行一段时间。这些任务在Future中返回以秒为单位的执行时间.这段代码负责任务执行和测量:publicFuturemeasure(int[]arr,ProcessIntArrayprocessIntArray,ExecutorServicees){Callabletask=(
我把一堆可运行的对象放到一个ExecutorService中://simplifiedcontentofmainmethodExecutorServicethreadPool=Executors.newCachedThreadPool();for(inti=0;i我希望我的程序/进程在所有工作人员完成后立即停止。但根据我的日志,这还需要20-30秒。worker没有分配任何资源,事实上,他们现在什么都不做。不要误会,这对我来说不是一个关键问题,我只是想了解正在发生的事情,我想知道这是否是正常行为。 最佳答案 Executors.ne
使用Executors.newSingleThreadExecutor()返回的ExecutorService时,如何中断? 最佳答案 为此,您需要submit()ExecutorService的任务,而不是调用execute()。执行此操作时,将返回一个Future可用于操作计划任务。具体可以调用cancel(true)在关联的Future上中断当前正在执行的任务(如果任务尚未开始运行,则完全跳过执行)。顺便说一下Executors.newSingleThreadExecutor()返回的对象实际上是一个ExecutorServi
我使用ExecutorService来简化并发多线程程序。取以下代码:while(xxx){ExecutorServiceexService=Executors.newFixedThreadPool(NUMBER_THREADS);...Future...=exService.submit(..);...}在我的情况下,问题是如果所有NUMBER_THREADS都被占用,则submit()不会阻塞。结果是任务队列被许多任务淹没。这样做的结果是,使用ExecutorService.shutdown()关闭执行服务需要很长时间(ExecutorService.isTerminated()将
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。为了帮助澄清这个问题以便可以重新打开它,visitthehelpcenter.关闭9年前。我想知道Executor和ExecutorService有什么区别?任何例子都会有所帮助。 最佳答案 Executor只是执行你给它的东西。ExecutorService添加了启动、关闭以及等待和查看您已提交以在Executor(它扩展)之上执行的作业状态的能力。 关于java-Exe