executorservice相关内容
我正在用最好的方式来实现我的处理管道。 我的生产者将工作送到BlockingQueue。在消费者方面,我轮询队列,包装我在一个Runnable任务中获得的,并提交到一个ExecutorService。 while(!isStopping()) { String work = workQueue.poll(1000L,TimeUnit.MILLISECONDS); if(wor
..
我有一个代码,其中4个线程同时运行。我想等待,直到所有这4个线程将完成。 我尝试了两种方法: Thread#join() ,这种方法正常工作。 join()后的代码只有在所有主题完成后才会执行。 ExecutorService#shutdown() ,这种技术允许执行 shutdown()之后的代码,即使并非所有线程都完成。 li> 程式码范例: ExecutorSer
..
我将ExecutorService中的Futures推入哈希映射。稍后,我可以在哈希映射中调用Futures上的cancel。尽管结果是真的,我后来在Callable过程中打断点,好像Future cancel()没有效果。我认为这可能是一个两个不同的引用在这里(即使引用ID列出为相同的断点时),但是想知道是否一些专家可以chime in。这里的代码看起来像: ExecutorServic
..
在Java 1.6(和Eclipse)上发现 FutureTask 在 Executors.newCachedThreadPool()中运行swallows在 Runnable.run()方法中的异常,我试图想出一个方法来捕获这些没有添加throw / catch到我所有的 Runnable 实现。 API建议覆盖 FutureTask.setException()在此: 导致此未来以
..
在ScheduledExecutorService中运行时,有没有很好的方法来阻止任务从任务本身重复? 我有以下任务: / p> 未来 f = scheduledExecutor.scheduleAtFixedRate(new Runnable(){ int count = 0; public void run(){ System.out.println(count ++
..
假设我有一个任务从java.util.concurrent.BlockingQueue中拉取元素并处理它们。 public void scheduleTask(int delay,TimeUnit timeUnit) { scheduledExecutorService.scheduleWithFixedDelay(new Task(queue),0,delay,timeUnit);
..
我提交了一堆工作给Java的执行者服务,我不知何故想暂时停止所有这些工作。什么是最好的方法做到这一点?如何恢复?还是我做这个完全错了?我应该按照一些其他模式来实现我想达到的目的(即能否暂停/恢复执行服务)? 解决方案 我自己的问题,我发现了一个 PausableThreadPoolExecutor 在 ThreadPoolExecutor 本身。这是我的版本使用Guava的监视器:
..
我需要提交一些任务,然后等待他们,直到所有结果可用。每个向向量(默认情况下同步)添加 String 。然后我需要为Vector中的每个结果启动一个新任务,但是只有当所有先前的任务停止执行他们的工作时,我才需要这样做。 我想使用Java Executor,特别是我尝试使用 Executors.newFixedThreadPool(100)固定数量的线程(我有一个可变数量的任务可以是10或500
..
我有一个进程将异步任务委托给线程池。我需要确保某些任务按顺序执行。 例如 任务按顺序到达 任务a1,b1,c1,d1, e1,a2,a3,b2,f1 任务可以以任何顺序执行,除非有自然依赖性,所以a1,a2,a3必须在 目前它不使用Java并发软件包,但我' 有没有人有类似的解决方案或建议如何实现这 解决方案 当我这样做过去,我通常有一个组件,然后提交cal
..
如果我们使用 ExecutorCompletionService ,我们可以提交系列任务作为 Callable s并获得结果与 CompletionService 交互作为队列。 但也有 ExecutorService 的 invokeAll 接受一个 Collection 的任务,我们得到一个 Future 的列表来检索结果。 据我所知,使用一个或另一个没有好处(除了我们避免 for
..
我试图使用ThreadPoolExecutor执行大量任务。下面是一个假设的例子: def workQueue = new ArrayBlockingQueue(3,false) def threadPoolExecutor = new ThreadPoolExecutor(3,3,1L,TimeUnit.HOURS,workQueue) for(int i =
..
使用 ExecutorService 超过运行线程将 Runnable 传递到线程构造函数? 解决方案 ExecutorService 消除了与较低级别抽象相关的许多复杂性,例如raw Thread 。它提供了在成功或突然终止任务时安全启动,关闭,提交,执行和阻止的机制(表示为 Runnable 或 Callable )。 从 JCiP ,第6.2节,直接从马的嘴: 执行者可能
..
我试图编写一个解决方案,其中单个线程生成可以并行执行的I / O密集型任务。每个任务都有重要的内存数据。所以我想能够限制暂时挂起的任务数量。 如果我像这样创建ThreadPoolExecutor: ThreadPoolExecutor executor = new ThreadPoolExecutor(numWorkerThreads,numWorkerThreads, 0L,Ti
..
下面是静态Executors.newCachedThreadPool是如何使用的:在标准Java库中实现: public static ExecutorService newCachedThreadPool(){ return new ThreadPoolExecutor(0,Integer。 MAX_VALUE, 60L,TimeUnit.SECONDS, new Synchron
..
我刚刚阅读这篇文章:这里 ,并认为答案不够直观。 您可以用简单的语言和示例解释, 我还阅读了Google的#1的主题 href =“http://www.javaworld.com/article/2078440/enterprise-java/java-tip-when-to-use-forkjoinpool-vs-executorservice.html”rel =“nofoll
..
newCachedThreadPool()与 newFixedThreadPool(...) $ b b 我应该在什么时候使用其中一种?哪种策略在资源利用方面更好? 解决方案 我认为文档解释这两个函数的区别和用法: newFixedThreadPool 创建一个重用 的线程池固定数量的线程操作 a共享无界队列。在任何 点,至多nThreads线程将 是活动的处理任务
..
我在寻找 ExecutorService 实现,可以提供超时。如果提交到ExecutorService的任务花费的时间超过运行超时,则会中断这些任务。实现这样的野兽不是这么艰巨的任务,但我想知道是否有人知道现有的实现。 这里是我想出了基于一些下面的讨论。任何评论? import java.util.List; import java.util.concurrent。*;
..
我需要一次执行一些任务4,像这样: ExecutorService taskExecutor = Executors.newFixedThreadPool (4)。 while(...){ taskExecutor.execute(new MyTask()); } //...等待以某种方式完成 我如何所有这些都完成后得到通知?现在我不能考虑什么比设置一些全局任务
..
我在clojure程序中创建了大量的线程: (import'(java.util。并发执行器) (def * pool * (Executors / newCachedThreadPool)) (defn do-something [] ; work Thread / sleep 200 ; repeat) (dotimes [i 10000] (.submit * po
..
我有一个fixedThreadPool,我使用它运行一堆工作线程来实现一个任务与许多组件的并行执行。 当所有线程都完成后,我使用一个方法(getResult)检索他们的结果(这是相当大的),并将它们写入一个文件。 最后,为了节省内存并能够看到中间结果,我希望每个线程一结束执行就将其结果写入文件,然后释放它的内存。 通常,我会添加代码到run()方法的结尾。但是,此类中的某些其他对
..