-
1 votesanswersviews
Java - 超时长时间运行可调用线程
public class FutureGetTimeoutTest { private static final ExecutorService THREAD_POOL = Executors.newFixedThreadPool(5); public static void main(String[] args) throws InterruptedException, Ex... -
1 votesanswersviews
未来实例清单
我想用更高效的东西替换未来实例列表 . 目前我正在遍历一棵树并提交一个Callable来确定树中每个节点的后代或自身节点的数量 . 我将Future实例保存在List中,然后在需要时从List获取适当的节点数: try { assert mIndex + 1 < mDescendants.size(); mItem = Item.BUILDER.set(mAn... -
17 votesanswersviews
是否可以向ThreadPoolExecutor的BlockingQueue添加任务?
用于ThreadPoolExecutor的JavaDoc不清楚是否可以将任务直接添加到支持执行程序的 BlockingQueue . The docs say调用 executor.getQueue() 是"intended primarily for debugging and monitoring" . 我正用自己的 BlockingQueue 构建一个 ThreadP... -
-1 votesanswersviews
使用ThreadPoolExecutor作为队列有什么缺点?
对于传统的Producer-Consumer问题,我们可以使用ExecutorService作为队列 . 有什么缺点呢?效率低下吗?因为线程的创建是昂贵的 . executor = Executors.newFixedThreadPool(90); // This will be called many times concurrently public void processObjectsWi... -
1 votesanswersviews
Executors中的数据结构
我们可以在定义ThreadPoolExecutors时提供BlockingQueue实现 . 但是,如果我使用工厂(Executors)创建一个如下所示的线程池,我想知道使用哪个阻塞队列 . 我猜这是一个LinkedBlockingQueue . 该文档讨论了无界队列,但它没有揭示实现 . ExectorService service = Executors.newSingleThreadExec... -
1 votesanswersviews
执行者框架 - 生产环境 者消费者模式
Java_author在5.3.1节中提到了 ...许多 生产环境 者 - 消费者设计可以使用Executor任务执行框架来表达,该框架本身使用 生产环境 者 - 消费者模式 . ... 生产环境 者 - 消费者模式提供了一种线程友好的方法,可以将问题分解为更简单的组件(如果可能) . Executor框架实现是否内部遵循 生产环境 者 - 消费者模式? 如果是,那么 生产环境 者 - 消... -
1 votesanswersviews
生产环境 者消费者请求取消
public class MainClass { private static final int size = 5; private ExecutorService prodExec = Executors.newFixedThreadPool(size); private ExecutorService consExec = Executors.newFixedThreadPool(siz... -
-4 votesanswersviews
等待线程在java中的线程池中可用
我在JAVA中使用executorservice进行线程池化 . 有没有一种方法可以让我在执行服务中的线程池中等待线程可用,并且仅在池中有可用线程时才继续 -
1 votesanswersviews
线程池执行程序监视要求
在我们的 生产环境 环境中,我们使用Thread Pool Executor来执行runntable任务 . 我需要为线程池 Actuator 服务开发一个线程池心跳监视系统: 每60秒,要求收集关于线程池 Actuator 的以下统计信息: 1)线程池的大小 2)等待线程的队列长度(线程执行前在阻塞队列中等待的持续时间或时间任务) 3)上一次心跳间隔期间队列中的平均等待时间 4)当前活动线程 5... -
1 votesanswersviews
我们何时在Executor Service中将工作线程视为空闲
我在理解执行程序服务的fixedthreadpool的工作时遇到了一个概念上的问题 .假设我有一个n个线程的固定池线程,我正在向这个服务提交几个任务 . 现在,如果工作人员可用,它将执行提交的任务,其他提交的任务在队列中等待,直到工作人员空闲为止 .我的问题是,我们什么时候将 Worker 视为自由工作者线程?一旦启动提交的任务,我们是否认为工作线程是空闲的,无论任务是否完成,或者只要提交的任务正... -
2 votesanswersviews
从Java中的线程池中删除空闲线程?
我正在使用固定大小的Java线程池(ExecutorService) . 假设我向线程池提交作业,作业空闲 . 是否有可能从线程池中删除空闲作业,以便可以处理队列中的其他作业,然后再次添加空闲作业? -
61 votesanswersviews
在ExecutorService上调用shutdown()的原因
在过去的几个小时里,我正在阅读相当多的内容,我根本看不到任何理由(有效理由)在 ExecutorService 上调用 shutdown() ,除非我们有一个庞大的应用程序存储,几十个和几十个不同的执行服务使用了很长时间 . 关闭所做的唯一事情(从我收集的内容)是正常线程完成后所做的事情 . 当普通的Thread完成Runnable(或Callable)的run方法时,它将被传递给Garbage ... -
0 votesanswersviews
Java ExecutorService ShutdownNow需要时间
我有一个Java ExecutorService(固定线程池为1),我将可运行的任务传递给将来执行 . 每项任务通常在10秒内完成 . ExecutorService只是简单地完成任务 . 如果我关闭我的应用程序,我运行以下; if (taskProcessor != null) { taskProcessor.shutdownNow(); while (!taskProcess... -
160 votesanswersviews
ExecutorService,如何等待所有任务完成
等待 ExecutorService 的所有任务完成的最简单方法是什么?我的任务主要是计算,所以我只想运行大量的工作 - 每个核心一个 . 现在我的设置如下: ExecutorService es = Executors.newFixedThreadPool(2); for (DataTable singleTable : uniquePhrases) { es.execute(ne... -
-1 votesanswersviews
ThreadPoolExecutor不是并发执行的?
这仅用于我的学术目的 . 我们添加到执行程序服务的任务是否真正并行执行 . 这是我提出这个问题的例子 Runnable Class public Tasks implement Runnable{ int taskCount; public Tasks(int count){ this.taskCount = count; } public void run(){ System.out.pri... -
1 votesanswersviews
Executors.newSingleThreadExecutor服务是否需要使用shutdown进行清理?
关于使用newSingleThreadExecutor清理执行程序服务,我有一点困惑 . 根据其实现,它在内部创建一个线程的线程池,如果失败,将创建一个新线程 . 我正在使用singleThreadExecutor,因为我想顺序运行在运行时创建的任务 . 所以我关心的是,当系统中没有更多任务时,我是否需要关闭此执行程序服务? 我已经读过ExecutorService中的活动线程阻止JVM关闭 . ... -
0 votesanswersviews
Executor Service中的依赖线程 - Java
我在我的程序中处理多个线程 . 有一些独立的线程,一些线程在开始执行之前依赖于其他线程的完成 . 目前我正在这样做 for ( final String inElementId : inElements ) { Thread thread = threadsMap.get( inElementId ); if ( ( thread != null ) && thr... -
7 votesanswersviews
何时关闭android应用程序中的executorservice
让我们假设我计划在我的整个应用程序中使用一个executorservice,我正在发送新的runnable或callable来执行/提交,并且我在执行此操作后立即拒绝关闭 . 我只想把我的“任务”扔给executorservice并让他处理它们并执行它们给它的资源(他有多少线程可用,如果需要他可以创建多少线程,然后相应地排队这些任务) . 根据您在Android应用程序中使用ExecutorSer... -
0 votesanswersviews
如何使用此自定义ExecutorService正常关闭?
我是我的代码我将一些任务提交给ExecutorService,然后等待它们使用shutdown()和awaitTermination()完成 . 但是,如果任何一个任务花费的时间超过一定时间,我希望它在不影响其他任务的情况下取消 . 我使用ExecutorService that interrupts tasks after a timeout中的代码修改代码如下: package com.jth... -
2 votesanswersviews
当ExecutorService上的所有任务完成或取消时,为什么awaitTermination无法可靠地返回
我是我的代码我将一些任务提交给ExecutorService,然后等待它们使用shutdown()和awaitTermination()完成 . 但是,如果任何一个任务花费的时间超过一定时间,我希望它在不影响其他任务的情况下取消 . 我使用ExecutorService that interrupts tasks after a timeout中的代码修改代码如下: package com.jth... -
2 votesanswersviews
执行期间ExcecutorService何时失败?
根据有关Executors中newFixedThreadPool的文档,我找到了 如果任何线程由于在关闭之前执行期间的故障而终止,则在需要执行后续任务时将使用新的线程 . 当我运行我的代码时,我检测到我的固定大小的threadPool,容量为5,随着时间的推移生成线程,如 pool-1-thread-3212 ,这假设是 pool-1-thread-5 or less 所以我想知道Execut... -
0 votesanswersviews
Java添加关闭钩子里面的方法
在我的代码中,我使用CompletionService和ExecutorService来启动一堆Thread来执行某些任务(这可能需要很长时间) . 所以我有一个创建ExecutorService和CompletionService的方法,然后开始提交线程然后获取结果 . 我想添加一个关闭钩子,以便优雅地关闭执行程序(我知道可能我应该处理释放资源而不是 Actuator 关闭但在我的情况下每个线程... -
5 votesanswersviews
什么时候在ExecutorService中收集可运行的对象垃圾?
我有一个可运行的对象A,它在实例化时与服务器交换心跳信号 . 我将这样的对象提交给具有固定线程池大小n的 Actuator 服务 . 当run方法遇到异常时,它将返回 . 对于给定的情况,我的所有线程都遇到异常并返回,但创建的对象仍然存活并继续交换心跳信号 . 如何将这些对象标记为垃圾收集,以便它们能够阻止心跳信号的交换? class A implements Runnable { pub... -
4 votesanswersviews
为什么ExecutorService.awaitTermination()在提交的任务完成之前成功
在我的代码中,我有许多 Actuator 服务作为管道运行,因为第一个 Actuator 服务可以向任何后来的 Actuator 服务提交任务,但从不反过来 . services.add(songLoaderService); services.add(AcoustIdMatcher.getExecutorService()); services.add(SongPrematcherMat... -
20 votesanswersviews
如何在FutureTask中捕获异常
在发现 Executors.newCachedThreadPool() 在Java 1.6上运行 Executors.newCachedThreadPool() (以及从Eclipse中)吞下 Runnable.run() 方法中的异常之后,我试图想出一种方法来捕获这些但不向我的所有 Runnable 实现添加throw / catch . API建议覆盖 FutureTask.setExcept... -
3 votesanswersviews
知道所有线程何时完成并处理异常
我正在使用Executor框架使用线程池启动多个线程,即newFixedThreadPool . 我使用threadpool.submit(aThread)来提交要由线程池执行的作业,这很好但是我需要确定所有线程何时完成,以便我可以继续进行其他处理 . 我看着使用Future.get()阻塞直到线程完成这里的问题是它阻塞直到结果可用 . 我还看到在发出关闭后继续调用isTerminated()方法... -
4 votesanswersviews
ExecutorService workStealingPool和cancel方法
你能想一想这个代码不起作用的任何原因并且总是输出“完成”,但第二个例子没有任何问题 . 我正在使用最新的JDK(8u45) . public static class MyClass implements Runnable { @Override public void run() { try { Threa... -
179 votesanswersviews
命名ExecutorService的线程和线程池
假设我有一个使用 Executor 框架的应用程序 Executors.newSingleThreadExecutor().submit(new Runnable(){ @Override public void run(){ // do stuff } } 当我在调试器中运行此应用程序时,将使用以下(默认)名称创建一个线程: Thread[pool-1-... -
2 votesanswersviews
如何在Java中实现非阻塞期货
Java Future对象用于获取由并行线程(Executors)执行的异步计算的结果 . 我们调用Future.get()方法并等待结果准备好 . 此示例显示了从Future检索结果的非阻塞方式 . java-implement-java-non-blocking-futures . NonBlockingExecutor executor = new NonBlockingExecutor(... -
0 votesanswersviews
如何继续向执行者提交任务
我一直在寻找一种情况的解决方案:我有一个HashSet of Callables,我将这个Set提交给执行程序进行并行执行 . 现在我希望任何提交的任务完成后,我应该能够为执行者分配一个新的Callable . 我尝试了这段代码,但是如果我使用executor.invoke,那么Executor会等到所有任务都完成,如果我使用executor.submit,那么任务就会按顺序完成 . 任何帮助,将...