9得票4回答
Java - 停止 ExecutorService 中的所有任务

我有几个执行器服务,它们会调度本地任务,例如读取文件、连接数据库等。这些进程会进行大量日志记录,由于有许多线程同时运行并写入自己的日志,因此日志非常繁琐。 现在,在某个时间点上,可能会引发异常,该异常会到达捕获所有异常的主方法。然后,我将关闭所有服务并取消每个任务,希望防止所有进一步的消息出...

12得票1回答
如何正确使用Java Executor?

我在我的多线程应用程序中使用了Java Executors,但我似乎无法弄清楚何时最好使用以下每种方式: 1.ExecutorService executor=Executors.newFixedThreadPool(50); executor.execute(new A_Runner(.....

8得票3回答
如何并行处理文件中的行?

我想读取一个大文件,处理每一行并将结果插入到数据库中。我的目标是将行的处理并行化,因为每个进程都是长时间运行的任务。因此,我希望有一个线程继续读取,多个线程继续处理,并且一个线程保持以块的形式插入到数据库中。 我将其分解如下: 1)按顺序逐行读取文件(容易) 2)将每行发送到线程池(3个...

15得票6回答
Java中最快的循环同步是什么?(ExecutorService vs. CyclicBarrier vs. X)

在并发迭代处理场景中,使用哪种Java同步机制可以提供最佳性能?例如下面所述的具有固定线程数的情况。经过自己一段时间的实验(使用ExecutorService和CyclicBarrier),我对结果感到有些惊讶,希望能得到专家建议和新的想法。这里现有的问题似乎主要不关注性能,因此提出了这个新问...

40得票8回答
使用ExecutorService控制任务执行顺序

我有一个将异步任务委派给线程池的过程。我需要确保某些任务按顺序执行。 例如: Tasks arrive in order Tasks a1, b1, c1, d1 , e1, a2, a3, b2, f1 任务可以按任意顺序执行,除非存在自然依赖关系,因此 a1,a2,a3 必须按照...

459得票27回答
使用ExecutorService如何等待所有线程完成?

我需要每次执行4个任务,就像这样:ExecutorService taskExecutor = Executors.newFixedThreadPool(4); while(...) { taskExecutor.execute(new MyTask()); } //...wait f...

10得票3回答
Future.cancel()并不能取消ScheduledExecutorService的计划执行

我正在安排一个任务: ScheduledExecutorService dataService = Executors.newScheduledThreadPool(1); Future<?> dataTimerHandle = dataService.scheduleAtFix...

42得票3回答
如何检查ExecutorService上运行的所有任务是否已完成

我有一个ConcurrentLinkedDeque,用于同步推入/弹出元素,并且我有一些异步任务,它们从堆栈中取出一个元素,如果该元素具有邻居,则将其推入堆栈。 示例代码:private ConcurrentLinkedDeque<Item> stack = new Concur...

23得票5回答
如何在FutureTask中捕获异常

在Java 1.6(以及从Eclipse)中,发现在Executors.newCachedThreadPool()中运行的FutureTask在Runnable.run()方法中吞噬异常后,我试图想出一种方法来捕获这些异常,而不必为所有我的Runnable实现添加throw/catch。 A...

27得票5回答
可变延迟的ScheduledExecutorService

假设我有一个任务,需要从java.util.concurrent.BlockingQueue中获取元素并对其进行处理。public void scheduleTask(int delay, TimeUnit timeUnit) { scheduledExecutorService.sc...